हिन्दी (Hindi)

Ubuntu 24.04 VPS पर Python, pip और वर्चुअल एनवायरनमेंट

2 min
VPS/VDS होस्टिंग

Ubuntu 24.04 में Python 3.12 आता है, लेकिन सीधे pip से पैकेज इंस्टॉल करने पर अब “externally-managed-environment” त्रुटि आती है। इसका समाधान है हर प्रोजेक्ट को अपने अलग वर्चुअल एनवायरनमेंट में रखना। यह गाइड दिखाती है कि अपने VPS Linux Infrawire को कैसे तैयार करें, डिपेंडेंसी ठीक से कैसे सँभालें और एप्लिकेशन को systemd सेवा के रूप में लगातार कैसे चलाएँ।

📋 पूर्वापेक्षाएँ

  • Ubuntu 24.04 या Debian 12 वाला VPS, जिसमें root SSH एक्सेस हो (IP और root पासवर्ड आपके कस्टमर एरिया में मिलते हैं)
  • एक Python प्रोजेक्ट या परीक्षण के लिए कोई सरल स्क्रिप्ट
  • कमांड लाइन की बुनियादी जानकारी

1. Python 3, pip और venv इंस्टॉल करें

Python 3 आमतौर पर पहले से इंस्टॉल होता है, लेकिन pip और venv मॉड्यूल अलग पैकेज हैं।

Bash
apt update apt install -y python3 python3-pip python3-venv python3-dev build-essential python3 --version pip3 --version

2. PEP 668 त्रुटि को समझें

Ubuntu 24.04 या Debian 12 पर root के रूप में pip install requests चलाने पर यह आता है:

TEXT
error: externally-managed-environment

यह सुरक्षा (PEP 668) pip को apt द्वारा प्रबंधित फ़ाइलें ओवरराइट करने और सिस्टम टूल बिगाड़ने से रोकती है। इसे --break-system-packages से बायपास न करें। नीचे दिए तीन साफ़ तरीकों में से कोई एक अपनाएँ।

3. वर्चुअल एनवायरनमेंट बनाएँ

वर्चुअल एनवायरनमेंट किसी एक प्रोजेक्ट के लिए Python और pip की निजी प्रति है।

Bash
mkdir -p /opt/myapp && cd /opt/myapp python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install requests flask gunicorn

अब प्रॉम्प्ट (venv) से शुरू होता है। एनवायरनमेंट से बाहर निकलने के लिए deactivate चलाएँ।

4. requirements.txt से डिपेंडेंसी सँभालें

सटीक संस्करण फ़्रीज़ करें ताकि प्रोजेक्ट को किसी दूसरे सर्वर पर हू-ब-हू दोबारा बनाया जा सके।

Bash
pip freeze > requirements.txt # नई मशीन पर python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

5. pipx से कमांड-लाइन टूल इंस्टॉल करें

स्वतंत्र टूल (httpie, yt-dlp, black आदि) के लिए pipx हर एक को अपना छिपा हुआ वर्चुअल एनवायरनमेंट देता है और कमांड को ग्लोबल रूप से उपलब्ध कराता है।

Bash
apt install -y pipx pipx ensurepath pipx install httpie

अपडेट किया गया PATH लोड करने के लिए इसके बाद नया शेल खोलें। जिस लाइब्रेरी का Debian पैकेज मौजूद है, उसके लिए apt install python3-requests भी सही विकल्प है।

6. एप्लिकेशन को systemd सेवा के रूप में चलाएँ

बिना विशेषाधिकार वाला एक समर्पित यूज़र बनाएँ, फिर ऐसी यूनिट लिखें जो वर्चुअल एनवायरनमेंट के इंटरप्रेटर को शुरू करे (यहाँ app.py में app नाम के Flask ऑब्जेक्ट को Gunicorn चला रहा है)।

Bash
useradd --system --home /opt/myapp --shell /usr/sbin/nologin myapp chown -R myapp:myapp /opt/myapp

/etc/systemd/system/myapp.service बनाएँ:

INI
1[Unit] 2Description=My Python application 3After=network.target 4 5[Service] 6User=myapp 7WorkingDirectory=/opt/myapp 8ExecStart=/opt/myapp/venv/bin/gunicorn --bind 127.0.0.1:8000 app:app 9Restart=on-failure 10RestartSec=5 11 12[Install] 13WantedBy=multi-user.target
Bash
systemctl daemon-reload systemctl enable --now myapp

ऐप को इंटरनेट पर उपलब्ध कराने के लिए पोर्ट 8000 के आगे nginx जैसा रिवर्स प्रॉक्सी लगाएँ।

✅ जाँच

Bash
which python # सक्रिय होने पर /opt/myapp/venv के अंदर इंगित करना चाहिए pip list systemctl status myapp --no-pager journalctl -u myapp -n 50 --no-pager curl -I http://127.0.0.1:8000

🔧 समस्या निवारण

The virtual environment was not created successfully because ensurepip is not available : venv पैकेज नहीं है। apt install python3-venv (या python3.12-venv) से इंस्टॉल करें और कमांड दोबारा चलाएँ।

systemd में status=203/EXEC : ExecStart का पथ गलत है या फ़ाइल सेवा-यूज़र के लिए चलने योग्य नहीं है। ls -l /opt/myapp/venv/bin/gunicorn और पहले सेट किए गए स्वामित्व से जाँचें।

केवल systemd के अंतर्गत ModuleNotFoundError : सेवा वर्चुअल एनवायरनमेंट की जगह सिस्टम Python इस्तेमाल कर रही है। ExecStart में हमेशा /opt/myapp/venv/bin/python या venv/bin की बाइनरी बुलाएँ।

pip: command not found : python3 -m pip का उपयोग करें या पहले वर्चुअल एनवायरनमेंट सक्रिय करें।


🎉 आपके Python प्रोजेक्ट अब अलग-थलग, दोहराने योग्य हैं और भरोसेमंद सेवा के रूप में चल रहे हैं!

नवीनतम ऑफ़र, छूट और विशेष प्रोमोशन से अपडेट रहें।

प्रोमोशन देखें

हम cookies का उपयोग करते हैं

हम अपनी साइट पर आपके अनुभव को बेहतर बनाने के लिए एनालिटिक्स cookies का उपयोग करते हैं। कोई भी डेटा तीसरे पक्ष को नहीं बेचा जाता है। हमारे बारे में और जानें गोपनीयता नीति.