Back to Blog

PyPI के लिए प्रॉक्सी: प्रतिबंधित क्षेत्रों में pip के माध्यम से Python पैकेज कैसे स्थापित करें

यदि pip आपके क्षेत्र में PyPI की ब्लॉकिंग के कारण पैकेज डाउनलोड नहीं कर सकता है, तो यह लेख प्रॉक्सी और मिरर सेट करने का तरीका दिखाएगा ताकि काम में कोई रुकावट न आए।

📅July 20, 2026
```html

PyPI — Python पैकेजों का मुख्य रिपोजिटरी — कई देशों और कॉर्पोरेट नेटवर्क में समय-समय पर अवरुद्ध होता है। यदि pip install लटकता है या कनेक्शन त्रुटि देता है, तो समस्या इसी में है। इस लेख में हम सभी कार्यशील तरीकों पर चर्चा करेंगे: पर्यावरण चर से लेकर मिरर और Docker कंटेनरों तक।

PyPI उपलब्ध क्यों नहीं है: अवरोधों के कारण

प्रॉक्सी सेट करने से पहले, यह समझना महत्वपूर्ण है कि आप किस प्रकार के अवरोध का सामना कर रहे हैं। इससे समाधान का चयन प्रभावित होता है।

क्षेत्रीय अवरोध

कई देशों (ईरान, चीन, कुछ क्षेत्रों में रूस के संकटकालीन सीमाओं के दौरान) में pypi.org और files.pythonhosted.org तक पहुँच सेवा प्रदाता या सरकारी फ़ायरवॉल के स्तर पर अवरुद्ध होती है। pip install requests कमांड बस लटक जाती है या ConnectionError देती है।

कॉर्पोरेट प्रॉक्सी और फ़ायरवॉल

कई कंपनियाँ सभी आउटगोइंग ट्रैफ़िक को कॉर्पोरेट प्रॉक्सी सर्वर के माध्यम से भेजती हैं। यदि pip को इस प्रॉक्सी के बारे में जानकारी नहीं है, तो यह सीधे कनेक्ट करने की कोशिश करता है और अस्वीकृति प्राप्त करता है। इस स्थिति में सामान्य त्रुटि होती है: ProxyError: HTTPSConnectionPool(host='pypi.org', port=443).

इंटरनेट से बिना कनेक्शन वाले सर्वर (air-gapped)

प्रोडक्शन सर्वर, बैंकों में सर्वर, सरकारी संरचनाओं में या अलगाव में क्लाउड VPC में अक्सर सीधे इंटरनेट तक पहुँच नहीं होती है। यहाँ या तो नेटवर्क के भीतर एक प्रॉक्सी सर्वर की आवश्यकता होती है, या PyPI का स्थानीय मिरर।

अस्थायी विफलताएँ और दर-सीमा

कभी-कभी PyPI स्वयं एक IP से अनुरोधों की संख्या को सीमित करता है — विशेष रूप से यदि आप एक साथ दर्जनों Docker कंटेनर चला रहे हैं। इस स्थिति में IP रोटेशन के साथ प्रॉक्सी समस्या का समाधान करती है।

कैसे जांचें कि क्या PyPI अवरुद्ध है?

टर्मिनल में चलाएँ: curl -v https://pypi.org/simple/. यदि कनेक्शन लटकता है या SSL/timeout त्रुटि देता है — तो आपके IP से PyPI उपलब्ध नहीं है। यदि त्रुटि में 407 Proxy Authentication Required शब्द है — तो आप कॉर्पोरेट प्रॉक्सी के पीछे हैं।

पर्यावरण चर: सबसे तेज़ तरीका

सबसे सरल और सामान्य तरीका है मानक पर्यावरण चर HTTP_PROXY और HTTPS_PROXY सेट करना। Pip, जैसे अधिकांश Python पुस्तकालय (requests, urllib3), स्वचालित रूप से इन्हें बिना किसी अतिरिक्त सेटिंग के उठाता है।

Linux और macOS

# बिना प्रमाणीकरण के
export HTTP_PROXY="http://1.2.3.4:8080"
export HTTPS_PROXY="http://1.2.3.4:8080"

# लॉगिन और पासवर्ड के साथ
export HTTP_PROXY="http://user:[email protected]:8080"
export HTTPS_PROXY="http://user:[email protected]:8080"

# SOCKS5 प्रॉक्सी
export HTTP_PROXY="socks5://user:[email protected]:1080"
export HTTPS_PROXY="socks5://user:[email protected]:1080"

# अब पैकेज स्थापित करें
pip install requests

हर बार कमांड टाइप करने से बचने के लिए, इन पंक्तियों को ~/.bashrc या ~/.zshrc में जोड़ें।

Windows (PowerShell)

# अस्थायी (केवल वर्तमान सत्र के लिए)
$env:HTTP_PROXY = "http://user:[email protected]:8080"
$env:HTTPS_PROXY = "http://user:[email protected]:8080"

# स्थायी (सभी सत्रों के लिए)
[System.Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://user:[email protected]:8080", "User")
[System.Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://user:[email protected]:8080", "User")

Windows (cmd)

set HTTP_PROXY=http://user:[email protected]:8080
set HTTPS_PROXY=http://user:[email protected]:8080
pip install numpy

ध्यान दें: यदि पासवर्ड में विशेष वर्ण हैं (@, #, %), तो उन्हें URL-एन्कोड करना होगा। उदाहरण के लिए, @ को %40 में बदलना होगा।

--proxy फ्लैग सीधे pip में

यदि किसी एक कमांड के लिए प्रॉक्सी का उपयोग करना है, बिना वैश्विक सेटिंग्स को बदले:

pip install pandas --proxy http://user:[email protected]:8080

# SOCKS5 के लिए pysocks पैकेज की आवश्यकता है
pip install pysocks
pip install scikit-learn --proxy socks5://user:[email protected]:1080

pip.conf और pip.ini के माध्यम से प्रॉक्सी सेट करना

यदि आप चाहते हैं कि प्रॉक्सी हर बार pip चलाने पर स्वचालित रूप से उपयोग हो — बिना मैन्युअल रूप से चर निर्यात किए — तो इसे pip के कॉन्फ़िगरेशन फ़ाइल में लिखें।

कॉन्फ़िगरेशन फ़ाइलों का स्थान

OS फ़ाइल का पथ दायरा
Linux / macOS ~/.config/pip/pip.conf वर्तमान उपयोगकर्ता
Linux / macOS /etc/pip.conf सिस्टम के सभी उपयोगकर्ता
Windows %APPDATA%\pip\pip.ini वर्तमान उपयोगकर्ता
कोई भी OS ./pip.conf (प्रोजेक्ट फ़ोल्डर में) केवल वर्तमान प्रोजेक्ट

pip.conf फ़ाइल की सामग्री

[global]
proxy = http://user:[email protected]:8080

# यदि SSL सत्यापन की जाँच को अनदेखा करना है (उत्पादन में अनुशंसित नहीं)
# trusted-host = pypi.org
#                files.pythonhosted.org

फ़ाइल को सहेजने के बाद, सभी आगामी pip install कॉल स्वचालित रूप से निर्दिष्ट प्रॉक्सी का उपयोग करेंगे। वर्तमान कॉन्फ़िगरेशन की जाँच करने के लिए आप कमांड चला सकते हैं:

pip config list
pip config debug  # सभी कॉन्फ़िगरेशन फ़ाइलों और उनके प्राथमिकताओं को दिखाता है

PyPI के लिए किस प्रकार का प्रॉक्सी चुनें

सभी प्रॉक्सी PyPI के साथ काम करने के लिए समान रूप से उपयुक्त नहीं हैं। चयन अवरोध के कारण और आपकी अवसंरचना पर निर्भर करता है।

प्रॉक्सी का प्रकार गति विश्वसनीयता सर्वश्रेष्ठ परिदृश्य
डेटा सेंटर ⚡ उच्च मध्यम कॉर्पोरेट नेटवर्क, CI/CD, बड़े पैकेज डाउनलोड करना
रिहायशी मध्यम ⭐ उच्च क्षेत्रीय अवरोध, जब डेटा सेंटर IP भी अवरुद्ध होते हैं
मोबाइल मध्यम ⭐ उच्च कठोर क्षेत्रीय अवरोध, जब अधिकतम बाईपास की आवश्यकता होती है
SOCKS5 ⚡ उच्च उच्च जब पूरे ट्रैफ़िक के लिए प्रॉक्सी की आवश्यकता हो, जिसमें DNS भी शामिल हो

अधिकांश डेवलपर्स के लिए, जो क्षेत्रीय सीमाओं के कारण PyPI के अवरोध का सामना कर रहे हैं, डेटा सेंटर प्रॉक्सी का विकल्प सबसे अच्छा होगा — वे पैकेज डाउनलोड करने में उच्च गति और स्थिरता प्रदान करते हैं। गति विशेष रूप से महत्वपूर्ण होती है जब भारी पैकेज जैसे PyTorch या TensorFlow (कई गीगाबाइट) स्थापित करने की आवश्यकता होती है।

यदि आपके क्षेत्र में डेटा सेंटर IP भी अवरुद्ध होते हैं (यह कठोर सरकारी सीमाओं के दौरान होता है), तो रिहायशी प्रॉक्सी पर विचार करें — ये वास्तविक घरेलू उपयोगकर्ताओं के IP का उपयोग करते हैं और अवरोधों के अधीन आने की संभावना कम होती है।

HTTP बनाम HTTPS बनाम SOCKS5: pip क्या समर्थन करता है?

Pip स्वाभाविक रूप से HTTP और HTTPS प्रॉक्सी का समर्थन करता है। SOCKS5 के लिए एक अतिरिक्त पैकेज स्थापित करने की आवश्यकता होती है:

# pip में SOCKS5 का समर्थन करने के लिए pysocks की आवश्यकता है
# लेकिन एक समस्या है: pip को pysocks स्थापित करने के लिए चाहिए, और pip प्रॉक्सी के बिना काम नहीं करता
# समाधान: पहले HTTP प्रॉक्सी के माध्यम से स्थापित करें, फिर SOCKS5 पर स्विच करें

pip install pysocks --proxy http://1.2.3.4:8080
# इसके बाद आप SOCKS5 का उपयोग कर सकते हैं
pip install requests --proxy socks5://user:[email protected]:1080

प्रॉक्सी के विकल्प के रूप में PyPI मिरर

यदि प्रॉक्सी सेट करना कठिन लगता है या आपके पास विश्वसनीय प्रॉक्सी सर्वर नहीं है, तो आप आधिकारिक और अनौपचारिक PyPI मिरर का उपयोग कर सकते हैं। यह विशेष रूप से चीन में डेवलपर्स के लिए प्रासंगिक है, जहाँ कई तेज़ स्थानीय मिरर हैं।

लोकप्रिय PyPI मिरर

मिरर URL क्षेत्र / ऑपरेटर
Tsinghua https://pypi.tuna.tsinghua.edu.cn/simple चीन (त्सिंगहुआ विश्वविद्यालय)
Aliyun https://mirrors.aliyun.com/pypi/simple चीन (अलीबाबा क्लाउड)
USTC https://pypi.mirrors.ustc.edu.cn/simple चीन (USTC)
Huawei Cloud https://repo.huaweicloud.com/repository/pypi/simple चीन (हुआवेई)

मिरर का उपयोग कैसे करें

# एक बार, -i फ्लैग के माध्यम से
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

# स्थायी रूप से, pip.conf के माध्यम से
# [global]
# index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# trusted-host = pypi.tuna.tsinghua.edu.cn

# कई स्रोत (fallback)
pip install pandas \
  -i https://pypi.tuna.tsinghua.edu.cn/simple \
  --extra-index-url https://pypi.org/simple/

⚠️ मिरर्स के बारे में सुरक्षा के लिए महत्वपूर्ण

केवल बड़े संगठनों (विश्वविद्यालय, क्लाउड प्रदाता) से विश्वसनीय मिरर्स का उपयोग करें। अज्ञात मिरर्स में संशोधित पैकेज हो सकते हैं जिनमें हानिकारक कोड होता है — इसे सप्लाई चेन अटैक (supply chain attack) कहा जाता है। महत्वपूर्ण परियोजनाओं के लिए, devpi या bandersnatch के माध्यम से अपना खुद का मिरर स्थापित करना बेहतर है।

Docker और CI/CD में pip के लिए प्रॉक्सी

Docker छवियों का निर्माण करते समय, pip कंटेनर के अंदर चलाया जाता है, जिसे PyPI तक पहुँच नहीं हो सकती है। यह कॉर्पोरेट CI/CD पाइपलाइनों (GitLab CI, GitHub Actions, Jenkins) में एक सामान्य समस्या है।

Dockerfile में ARG के माध्यम से प्रॉक्सी पास करना

FROM python:3.11-slim

# प्रॉक्सी के लिए ARG घोषित करें
ARG HTTP_PROXY
ARG HTTPS_PROXY

# pip और अन्य उपकरणों के लिए ENV में पास करें
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# स्थापना के बाद प्रॉक्सी को रीसेट करें (सुरक्षा)
ENV HTTP_PROXY=""
ENV HTTPS_PROXY=""

COPY . .
CMD ["python", "app.py"]

प्रॉक्सी पास करते हुए निर्माण:

docker build \
  --build-arg HTTP_PROXY=http://user:[email protected]:8080 \
  --build-arg HTTPS_PROXY=http://user:[email protected]:8080 \
  -t myapp .

Docker डेमॉन के लिए वैश्विक प्रॉक्सी सेटिंग

# फ़ाइल: ~/.docker/config.json
{
  "proxies": {
    "default": {
      "httpProxy": "http://user:[email protected]:8080",
      "httpsProxy": "http://user:[email protected]:8080",
      "noProxy": "localhost,127.0.0.1"
    }
  }
}

GitLab CI / GitHub Actions

# .gitlab-ci.yml
variables:
  HTTP_PROXY: "http://user:[email protected]:8080"
  HTTPS_PROXY: "http://user:[email protected]:8080"
  PIP_INDEX_URL: "https://pypi.tuna.tsinghua.edu.cn/simple"

install:
  script:
    - pip install -r requirements.txt
# .github/workflows/ci.yml
jobs:
  build:
    runs-on: ubuntu-latest
    env:
      HTTP_PROXY: ${{ secrets.HTTP_PROXY }}
      HTTPS_PROXY: ${{ secrets.HTTP_PROXY }}
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: pip install -r requirements.txt

महत्वपूर्ण: कभी भी YAML फ़ाइलों में सीधे प्रॉक्सी क्रेडेंशियल्स को हार्डकोड न करें। अपने CI/CD सेवा के सीक्रेट्स (Secrets) का उपयोग करें।

Poetry, conda और uv के लिए प्रॉक्सी सेट करना

आधुनिक Python परियोजनाएँ तेजी से वैकल्पिक पैकेज प्रबंधकों का उपयोग कर रही हैं। आइए प्रत्येक के लिए प्रॉक्सी सेटिंग पर चर्चा करें।

Poetry

Poetry पर्यावरण चर का उपयोग pip की तरह ही करता है। लेकिन एक बिंदु है — Poetry अपने स्वयं के HTTP क्लाइंट का उपयोग करता है जो requests पर आधारित है, इसलिए मानक चर काम करते हैं:

# Poetry के लिए काम करता है
export HTTPS_PROXY=http://user:[email protected]:8080
poetry install

# या pyproject.toml में स्रोत सेट करना
# [[tool.poetry.source]]
# name = "tsinghua"
# url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
# priority = "primary"

conda / mamba

conda की अपनी कॉन्फ़िगरेशन प्रणाली है:

# कमांड के माध्यम से
conda config --set proxy_servers.http http://user:[email protected]:8080
conda config --set proxy_servers.https http://user:[email protected]:8080

# या सीधे ~/.condarc में
# proxy_servers:
#   http: http://user:[email protected]:8080
#   https: http://user:[email protected]:8080

# चीन के लिए conda का मिरर
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

uv (नया तेज़ पैकेज प्रबंधक)

uv Astral द्वारा Python के लिए सबसे तेज़ पैकेज प्रबंधकों में से एक है। यह भी मानक पर्यावरण चर का समर्थन करता है:

export HTTPS_PROXY=http://user:[email protected]:8080
uv pip install numpy

# या index फ्लैग के साथ
uv pip install numpy --index-url https://pypi.tuna.tsinghua.edu.cn/simple

pipenv

# pipenv pip से पर्यावरण चर विरासत में लेता है
export HTTPS_PROXY=http://user:[email protected]:8080
pipenv install requests

# Pipfile में स्रोत बदलना
# [[source]]
# url = "https://pypi.tuna.tsinghua.edu.cn/simple"
# verify_ssl = true
# name = "tsinghua"

आम त्रुटियाँ और उनके समाधान

आइए उन सबसे सामान्य समस्याओं पर चर्चा करें जिनका सामना डेवलपर्स pip के लिए प्रॉक्सी सेट करते समय करते हैं।

त्रुटि 1: SSL प्रमाणपत्र सत्यापन विफल

# त्रुटि:
# SSL: CERTIFICATE_VERIFY_FAILED] प्रमाणपत्र सत्यापन विफल: स्थानीय जारीकर्ता प्रमाणपत्र प्राप्त करने में असमर्थ

# कारण: कॉर्पोरेट प्रॉक्सी SSL प्रमाणपत्रों को बदल देती है (MITM)
# समाधान 1: कॉर्पोरेट CA प्रमाणपत्र जोड़ें
pip install requests --cert /path/to/corporate-ca.crt

# समाधान 2: pip.conf में प्रमाणपत्र का पथ निर्दिष्ट करें
# [global]
# cert = /path/to/corporate-ca.crt

# समाधान 3 (उत्पादन के लिए अनुशंसित नहीं): SSL सत्यापन को बंद करें
pip install requests --trusted-host pypi.org --trusted-host files.pythonhosted.org

त्रुटि 2: 407 प्रॉक्सी प्रमाणीकरण आवश्यक

# त्रुटि:
# ProxyError: 407 प्रॉक्सी प्रमाणीकरण आवश्यक

# कारण: प्रॉक्सी प्रमाणीकरण की आवश्यकता है, लेकिन लॉगिन/पासवर्ड नहीं भेजे गए हैं
# समाधान: सुनिश्चित करें कि क्रेडेंशियल्स सही ढंग से एन्कोडेड हैं

# यदि पासवर्ड में विशेष वर्ण हैं, तो उन्हें एन्कोड करें:
python3 -c "from urllib.parse import quote; print(quote('my@pass#word'))"
# आउटपुट: my%40pass%23word

export HTTPS_PROXY="http://user:my%40pass%[email protected]:8080"

त्रुटि 3: pip पर्यावरण चर को अनदेखा करता है

# सुनिश्चित करें कि चर सही ढंग से सेट हैं
echo $HTTPS_PROXY  # Linux/macOS
echo %HTTPS_PROXY%  # Windows cmd

# pip कॉन्फ़िगरेशन की प्राथमिकता की जाँच करें
pip config debug

# संभावित कारण: वर्चुअल वातावरण सिस्टम चर को नहीं देखता
# समाधान: venv को सक्रिय करें और चर को फिर से सेट करें
source venv/bin/activate
export HTTPS_PROXY=http://1.2.3.4:8080
pip install package-name

त्रुटि 4: प्रॉक्सी के माध्यम से भी कनेक्शन टाइमआउट

# प्रॉक्सी की उपलब्धता की जाँच करें
curl -v --proxy http://user:[email protected]:8080 https://pypi.org/simple/

# यदि प्रॉक्सी उपलब्ध नहीं है — तो समस्या स्वयं प्रॉक्सी सर्वर में है
# किसी अन्य पोर्ट या प्रोटोकॉल का प्रयास करें

# pip का टाइमआउट बढ़ाएँ
pip install package-name --timeout 120

# या pip.conf में:
# [global]
# timeout = 120

त्रुटि 5: पैकेज स्थापित है, लेकिन आयात काम नहीं करता

यह प्रॉक्सी से संबंधित नहीं है — संभवतः, पैकेज सिस्टम Python में स्थापित हुआ है, न कि सक्रिय वर्चुअल वातावरण में। जाँच करें:

which pip      # venv के अंदर pip को इंगित करना चाहिए
which python   # venv के अंदर python को इंगित करना चाहिए
pip show requests  # दिखाएगा कि पैकेज कहाँ स्थापित हुआ है

pip के लिए प्रॉक्सी डिबगिंग चेकलिस्ट

चरण-दर-चरण निदान:

  1. प्रॉक्सी के बिना PyPI की उपलब्धता की जाँच करें: curl https://pypi.org
  2. सुनिश्चित करें कि प्रॉक्सी सर्वर काम कर रहा है: curl --proxy http://1.2.3.4:8080 https://pypi.org
  3. पर्यावरण चर की जाँच करें: env | grep -i proxy
  4. pip कॉन्फ़िगरेशन देखें: pip config debug
  5. प्रत्यक्ष फ्लैग का प्रयास करें: pip install pkg --proxy http://... -v
  6. यदि SSL त्रुटियाँ हैं — कॉर्पोरेट CA प्रमाणपत्र की जाँच करें
  7. यदि फिर भी काम नहीं करता — प्रॉक्सी के बजाय मिरर का प्रयास करें

निष्कर्ष

PyPI का अवरोध एक समाधान योग्य समस्या है, और इसके कई विश्वसनीय समाधान हैं। त्वरित शुरुआत के लिए, बस HTTPS_PROXY सेट करें और सामान्य रूप से pip चलाएँ। स्थायी संचालन के लिए — प्रॉक्सी को pip.conf में लिखें। CI/CD के लिए — सीक्रेट्स और ARG का उपयोग करें Docker में।

प्रॉक्सी और मिरर के बीच चयन संदर्भ पर निर्भर करता है: मिरर तेज़ और सेट करने में आसान होते हैं, लेकिन मिरर ऑपरेटर पर भरोसा करने की आवश्यकता होती है। प्रॉक्सी अधिक बहुपरकारी है — यह न केवल PyPI के साथ काम करता है, बल्कि किसी भी अन्य अवरुद्ध संसाधनों (npm, Docker Hub, GitHub) के साथ भी काम करता है।

यदि आपको अपने क्षेत्र में PyPI, GitHub, Docker Hub और अन्य अवरुद्ध संसाधनों के साथ काम करने के लिए एक विश्वसनीय प्रॉक्सी की आवश्यकता है, तो डेटा सेंटर प्रॉक्सी पर विचार करें — ये भारी पैकेज डाउनलोड करते समय उच्च गति प्रदान करते हैं और CI/CD वातावरण में स्थिरता से काम करते हैं। यदि आपके क्षेत्र में डेटा सेंटर के IP भी अवरुद्ध होते हैं, तो रिहायशी प्रॉक्सी पर विचार करें जो वास्तविक घरेलू उपयोगकर्ताओं के IP का उपयोग करते हैं — ये क्षेत्रीय अवरोधों के अधीन आने की संभावना कम होती है।

```