Zurück zum Blog

Proxys für PyPI: So installieren Sie Python-Pakete in gesperrten Regionen über pip

Wenn pip Pakete aufgrund einer Blockade von PyPI in Ihrer Region nicht herunterladen kann, zeigt dieser Artikel, wie man einen Proxy und Mirrors einrichtet, um einen reibungslosen Betrieb zu gewährleisten.

📅20. Juli 2026
```html

PyPI — das Hauptrepository für Python-Pakete — wird in einer Reihe von Ländern und Unternehmensnetzwerken gelegentlich blockiert. Wenn pip install hängt oder einen Verbindungsfehler ausgibt, liegt das genau daran. In diesem Artikel werden alle funktionierenden Methoden behandelt: von Umgebungsvariablen über Mirrors bis hin zu Docker-Containern.

Warum ist PyPI nicht verfügbar: Gründe für Blockaden

Bevor Sie einen Proxy einrichten, ist es wichtig zu verstehen, mit welcher Art von Blockade Sie konfrontiert sind. Dies beeinflusst die Wahl der Lösung.

Regionale Blockaden

In mehreren Ländern (Iran, China, einige Regionen Russlands während der Zeit von Sanktionen) wird der Zugang zu pypi.org und files.pythonhosted.org auf Anbieterebene oder durch staatliche Firewalls blockiert. Der Befehl pip install requests hängt einfach oder gibt einen ConnectionError aus.

Unternehmensproxys und Firewalls

Viele Unternehmen leiten den gesamten ausgehenden Datenverkehr über einen Unternehmensproxy-Server. Wenn pip nichts über diesen Proxy weiß, versucht es, direkt zu verbinden und erhält eine Ablehnung. Ein typischer Fehler in diesem Fall lautet: ProxyError: HTTPSConnectionPool(host='pypi.org', port=443).

Server ohne Internetzugang (air-gapped)

Produktionsserver, Server in Banken, staatlichen Einrichtungen oder in isolierten Cloud-VPCs haben oft keinen direkten Zugang zum Internet. Hier wird entweder ein Proxy-Server innerhalb des Netzwerks oder ein lokales PyPI-Mirror benötigt.

Temporäre Ausfälle und Rate-Limiting

Manchmal begrenzt PyPI selbst die Anzahl der Anfragen von einer IP — insbesondere wenn Sie Dutzende von Docker-Containern gleichzeitig bereitstellen. In diesem Fall löst ein Proxy mit IP-Rotation das Problem.

Wie überprüft man, ob PyPI blockiert ist?

Führen Sie im Terminal aus: curl -v https://pypi.org/simple/. Wenn die Verbindung hängt oder einen SSL-/Timeout-Fehler ausgibt — PyPI ist von Ihrer IP aus nicht verfügbar. Wenn der Fehler das Wort 407 Proxy Authentication Required enthält — Sie befinden sich hinter einem Unternehmensproxy.

Umgebungsvariablen: der schnellste Weg

Der einfachste und universellste Weg ist, die Standard-Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY zu setzen. Pip, wie die meisten Python-Bibliotheken (requests, urllib3), übernimmt diese automatisch ohne zusätzliche Konfiguration.

Linux und macOS

# Ohne Authentifizierung
export HTTP_PROXY="http://1.2.3.4:8080"
export HTTPS_PROXY="http://1.2.3.4:8080"

# Mit Benutzername und Passwort
export HTTP_PROXY="http://user:[email protected]:8080"
export HTTPS_PROXY="http://user:[email protected]:8080"

# SOCKS5-Proxy
export HTTP_PROXY="socks5://user:[email protected]:1080"
export HTTPS_PROXY="socks5://user:[email protected]:1080"

# Jetzt Paket installieren
pip install requests

Um die Befehle nicht jedes Mal eingeben zu müssen, fügen Sie die Zeilen in ~/.bashrc oder ~/.zshrc hinzu.

Windows (PowerShell)

# Vorübergehend (nur für die aktuelle Sitzung)
$env:HTTP_PROXY = "http://user:[email protected]:8080"
$env:HTTPS_PROXY = "http://user:[email protected]:8080"

# Dauerhaft (für alle Sitzungen)
[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

Bitte beachten Sie: Wenn das Passwort spezielle Zeichen enthält (@, #, %), müssen diese URL-kodiert werden. Zum Beispiel wird @ zu %40.

Flag --proxy direkt in pip

Wenn Sie den Proxy nur für einen Befehl verwenden möchten, ohne die globalen Einstellungen zu ändern:

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

# Für SOCKS5 wird das Paket pysocks benötigt
pip install pysocks
pip install scikit-learn --proxy socks5://user:[email protected]:1080

Proxy-Konfiguration über pip.conf und pip.ini

Wenn Sie möchten, dass der Proxy automatisch bei jedem Start von pip verwendet wird — ohne manuelles Exportieren der Variablen — tragen Sie ihn in die Konfigurationsdatei pip ein.

Standorte der Konfigurationsdateien

OS Dateipfad Geltungsbereich
Linux / macOS ~/.config/pip/pip.conf Aktueller Benutzer
Linux / macOS /etc/pip.conf Alle Benutzer des Systems
Windows %APPDATA%\pip\pip.ini Aktueller Benutzer
Jedes OS ./pip.conf (im Projektordner) Nur das aktuelle Projekt

Inhalt der Datei pip.conf

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

# Wenn die SSL-Überprüfung ignoriert werden soll (nicht empfohlen in der Produktion)
# trusted-host = pypi.org
#                files.pythonhosted.org

Nach dem Speichern der Datei werden alle nachfolgenden Aufrufe von pip install automatisch den angegebenen Proxy verwenden. Die aktuelle Konfiguration kann mit dem Befehl überprüft werden:

pip config list
pip config debug  # zeigt alle Konfigurationsdateien und deren Prioritäten an

Welchen Proxy-Typ für PyPI wählen

Nicht alle Proxys sind gleich gut für die Arbeit mit PyPI geeignet. Die Wahl hängt von der Art der Blockade und Ihrer Infrastruktur ab.

Proxy-Typ Geschwindigkeit Zuverlässigkeit Bester Anwendungsfall
Rechenzentrum ⚡ Hoch Mittel Unternehmensnetzwerke, CI/CD, Herunterladen großer Pakete
Residential Mittel ⭐ Hoch Regionale Blockaden, wenn Rechenzentrums-IP ebenfalls blockiert sind
Mobil Mittel ⭐ Hoch Strenge regionale Blockaden, wenn maximale Umgehung erforderlich ist
SOCKS5 ⚡ Hoch Hoch Wenn ein Proxy für den gesamten Datenverkehr, einschließlich DNS, benötigt wird

Für die meisten Entwickler, die mit Blockaden von PyPI aufgrund regionaler Einschränkungen konfrontiert sind, sind Rechenzentrumsproxys die optimale Wahl — sie bieten hohe Downloadgeschwindigkeiten und eine stabile Verbindung. Geschwindigkeit ist besonders wichtig, wenn große Pakete wie PyTorch oder TensorFlow (mehrere Gigabyte) installiert werden müssen.

Wenn jedoch auch Rechenzentrums-IP in Ihrer Region blockiert sind (was bei strengen staatlichen Einschränkungen vorkommen kann), sollten Sie residential Proxys in Betracht ziehen — diese verwenden IPs von echten Haushaltsnutzern und sind deutlich seltener von Blockaden betroffen.

HTTP vs HTTPS vs SOCKS5: Was unterstützt pip?

Pip unterstützt nativ HTTP- und HTTPS-Proxys. Für SOCKS5 muss ein zusätzliches Paket installiert werden:

# Für die Unterstützung von SOCKS5 in pip wird pysocks benötigt
# Aber es gibt ein Problem: pip wird benötigt, um pysocks zu installieren, und pip funktioniert nicht ohne Proxy
# Lösung: Zuerst über HTTP-Proxy installieren, dann auf SOCKS5 umschalten

pip install pysocks --proxy http://1.2.3.4:8080
# Danach kann SOCKS5 verwendet werden
pip install requests --proxy socks5://user:[email protected]:1080

PyPI-Mirrors als Alternative zu Proxys

Wenn die Einrichtung eines Proxys kompliziert erscheint oder Sie keinen zuverlässigen Proxy-Server haben, können Sie offizielle und inoffizielle PyPI-Mirrors verwenden. Dies ist besonders relevant für Entwickler in China, wo es mehrere schnelle lokale Mirrors gibt.

Beliebte PyPI-Mirrors

Mirror URL Region / Betreiber
Tsinghua https://pypi.tuna.tsinghua.edu.cn/simple China (Tsinghua Universität)
Aliyun https://mirrors.aliyun.com/pypi/simple China (Alibaba Cloud)
USTC https://pypi.mirrors.ustc.edu.cn/simple China (USTC)
Huawei Cloud https://repo.huaweicloud.com/repository/pypi/simple China (Huawei)

Wie man einen Mirror verwendet

# Einmalig, über das Flag -i
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

# Dauerhaft, über pip.conf
# [global]
# index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# trusted-host = pypi.tuna.tsinghua.edu.cn

# Mehrere Quellen (Fallback)
pip install pandas \
  -i https://pypi.tuna.tsinghua.edu.cn/simple \
  --extra-index-url https://pypi.org/simple/

⚠️ Wichtig zur Sicherheit von Mirrors

Verwenden Sie nur vertrauenswürdige Mirrors von großen Organisationen (Universitäten, Cloud-Anbieter). Unbekannte Mirrors können modifizierte Pakete mit schädlichem Code enthalten — dies wird als Supply Chain Attack bezeichnet. Für kritische Projekte ist es besser, ein eigenes Mirror über devpi oder bandersnatch einzurichten.

Proxys für pip in Docker und CI/CD

Beim Erstellen von Docker-Images wird pip innerhalb eines Containers ausgeführt, der möglicherweise keinen Zugriff auf PyPI hat. Dies ist ein besonders häufiges Problem in Unternehmens-CI/CD-Pipelines (GitLab CI, GitHub Actions, Jenkins).

Übertragung des Proxys über ARG in Dockerfile

FROM python:3.11-slim

# Deklarieren Sie ARG für den Proxy
ARG HTTP_PROXY
ARG HTTPS_PROXY

# Übertragen in ENV für pip und andere Werkzeuge
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY

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

# Proxy nach der Installation zurücksetzen (Sicherheit)
ENV HTTP_PROXY=""
ENV HTTPS_PROXY=""

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

Build mit Übertragung des Proxys:

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

Globale Proxy-Konfiguration für den Docker-Daemon

# Datei: ~/.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

Wichtig: Hardcodieren Sie niemals die Proxy-Anmeldeinformationen direkt in YAML-Dateien. Verwenden Sie die Secrets Ihres CI/CD-Dienstes.

Proxy-Konfiguration für Poetry, conda und uv

Moderne Python-Projekte verwenden zunehmend alternative Paketmanager. Lassen Sie uns die Proxy-Konfiguration für jeden von ihnen betrachten.

Poetry

Poetry verwendet Umgebungsvariablen genauso wie pip. Aber es gibt einen Haken — Poetry verwendet einen eigenen HTTP-Client, der auf requests basiert, daher funktionieren die Standardvariablen:

# Funktioniert für Poetry
export HTTPS_PROXY=http://user:[email protected]:8080
poetry install

# Oder Konfiguration der Quelle in pyproject.toml
# [[tool.poetry.source]]
# name = "tsinghua"
# url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
# priority = "primary"

conda / mamba

Bei conda gibt es ein eigenes Konfigurationssystem:

# Über den Befehl
conda config --set proxy_servers.http http://user:[email protected]:8080
conda config --set proxy_servers.https http://user:[email protected]:8080

# Oder direkt in ~/.condarc
# proxy_servers:
#   http: http://user:[email protected]:8080
#   https: http://user:[email protected]:8080

# Conda-Mirror für China
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

uv (neuer schneller Paketmanager)

uv von Astral ist einer der schnellsten Paketmanager für Python. Er unterstützt ebenfalls die Standard-Umgebungsvariablen:

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

# Oder mit dem Flag index
uv pip install numpy --index-url https://pypi.tuna.tsinghua.edu.cn/simple

pipenv

# pipenv erbt Umgebungsvariablen von pip
export HTTPS_PROXY=http://user:[email protected]:8080
pipenv install requests

# Quelle im Pipfile ändern
# [[source]]
# url = "https://pypi.tuna.tsinghua.edu.cn/simple"
# verify_ssl = true
# name = "tsinghua"

Häufige Fehler und deren Behebung

Lassen Sie uns die häufigsten Probleme betrachten, mit denen Entwickler bei der Proxy-Konfiguration für pip konfrontiert sind.

Fehler 1: SSL-Zertifikatüberprüfung fehlgeschlagen

# Fehler:
# SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatüberprüfung fehlgeschlagen: lokales Ausstellerzertifikat konnte nicht abgerufen werden

# Grund: Unternehmensproxy ersetzt SSL-Zertifikate (MITM)
# Lösung 1: Unternehmens-CA-Zertifikat hinzufügen
pip install requests --cert /path/to/corporate-ca.crt

# Lösung 2: Pfad zum Zertifikat in pip.conf angeben
# [global]
# cert = /path/to/corporate-ca.crt

# Lösung 3 (NICHT empfohlen für die Produktion): SSL-Überprüfung deaktivieren
pip install requests --trusted-host pypi.org --trusted-host files.pythonhosted.org

Fehler 2: 407 Proxy-Authentifizierung erforderlich

# Fehler:
# ProxyError: 407 Proxy Authentication Required

# Grund: Proxy erfordert Authentifizierung, aber Benutzername/Passwort wurden nicht übergeben
# Lösung: Stellen Sie sicher, dass die Anmeldeinformationen korrekt kodiert sind

# Wenn das Passwort Sonderzeichen enthält, kodieren Sie diese:
python3 -c "from urllib.parse import quote; print(quote('my@pass#word'))"
# Ausgabe: my%40pass%23word

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

Fehler 3: pip ignoriert Umgebungsvariablen

# Überprüfen Sie, ob die Variablen korrekt gesetzt sind
echo $HTTPS_PROXY  # Linux/macOS
echo %HTTPS_PROXY%  # Windows cmd

# Überprüfen Sie die Priorität der pip-Konfiguration
pip config debug

# Möglicher Grund: Virtuelle Umgebung sieht die Systemvariablen nicht
# Lösung: Aktivieren Sie venv und setzen Sie die Variablen erneut
source venv/bin/activate
export HTTPS_PROXY=http://1.2.3.4:8080
pip install package-name

Fehler 4: Verbindungs-Timeout auch über Proxy

# Überprüfen Sie die Erreichbarkeit des Proxys
curl -v --proxy http://user:[email protected]:8080 https://pypi.org/simple/

# Wenn der Proxy nicht erreichbar ist — das Problem liegt am Proxy-Server selbst
# Versuchen Sie einen anderen Port oder ein anderes Protokoll

# Erhöhen Sie das Timeout von pip
pip install package-name --timeout 120

# Oder in pip.conf:
# [global]
# timeout = 120

Fehler 5: Paket installiert, aber Import funktioniert nicht

Dies hat nichts mit dem Proxy zu tun — wahrscheinlich wurde das Paket im System-Python und nicht in der aktiven virtuellen Umgebung installiert. Überprüfen Sie:

which pip      # sollte auf pip innerhalb von venv zeigen
which python   # sollte auf python innerhalb von venv zeigen
pip show requests  # zeigt, wo das Paket installiert wurde

Checkliste zur Fehlersuche bei Proxys für pip

Schritt-für-Schritt-Diagnose:

  1. Überprüfen Sie die Erreichbarkeit von PyPI ohne Proxy: curl https://pypi.org
  2. Stellen Sie sicher, dass der Proxy-Server funktioniert: curl --proxy http://1.2.3.4:8080 https://pypi.org
  3. Überprüfen Sie die Umgebungsvariablen: env | grep -i proxy
  4. Überprüfen Sie die pip-Konfiguration: pip config debug
  5. Versuchen Sie das Flag direkt: pip install pkg --proxy http://... -v
  6. Wenn SSL-Fehler auftreten — überprüfen Sie das Unternehmens-CA-Zertifikat
  7. Wenn es immer noch nicht funktioniert — versuchen Sie einen Mirror anstelle eines Proxys

Fazit

Die Blockade von PyPI ist ein lösbares Problem, und es gibt mehrere zuverlässige Lösungen. Für einen schnellen Start reicht es aus, die Variable HTTPS_PROXY zu setzen und pip wie gewohnt zu starten. Für einen dauerhaften Betrieb — den Proxy in pip.conf eintragen. Für CI/CD — Secrets und ARG in Docker verwenden.

Die Wahl zwischen Proxy und Mirror hängt vom Kontext ab: Mirrors sind schneller und einfacher einzurichten, erfordern jedoch Vertrauen in den Betreiber des Mirrors. Proxys sind universeller — sie funktionieren nicht nur mit PyPI, sondern auch mit allen anderen blockierten Ressourcen (npm, Docker Hub, GitHub).

Wenn Sie einen zuverlässigen Proxy für die Arbeit mit PyPI, GitHub, Docker Hub und anderen blockierten Ressourcen in Ihrer Region benötigen, achten Sie auf Rechenzentrumsproxys — sie bieten hohe Geschwindigkeiten beim Herunterladen großer Pakete und funktionieren stabil in CI/CD-Umgebungen. Wenn jedoch in Ihrer Region sogar die IPs von Rechenzentren blockiert werden, sollten Sie residential Proxys mit IPs von echten Haushaltsnutzern in Betracht ziehen — diese sind deutlich seltener von regionalen Blockaden betroffen.

```