web-dev-qa-db-de.com

Anmeldeinformationen in pip.conf für privates PyPI

Ich habe ein privates PyPI-Repository. Gibt es eine Möglichkeit, Anmeldeinformationen in pip.conf Ähnlich wie in .pypirc Zu speichern?

Was ich meine. Derzeit können Sie in .pypirc Eine solche Konfiguration haben:

[distutils]
index-servers = custom

[custom]
repository: https://pypi.example.com
username: johndoe
password: changeme

Nach dem, was ich gefunden habe, können Sie pip.conf Eingeben:

[global]
index = https://username:[email protected]/pypi
index-url = https://username:[email protected]/simple
cert = /etc/ssl/certs/ca-certificates.crt

Aber hier sehe ich zwei Probleme:

  1. Für jede URL müssen Sie jedes Mal denselben Benutzernamen und dasselbe Passwort angeben.
  2. Benutzername und Passwort werden in den Protokollen sichtbar, da sie Teil der URL sind.

Gibt es eine Möglichkeit, Benutzername und Passwort außerhalb der URL zu speichern?

24
stolho

Sie können Anmeldeinformationen für Pip wie folgt in ~/.netrc Speichern:

machine pypi.example.com
    login johndoe
    password changeme

Pip verwendet diese Anmeldeinformationen beim Zugriff auf https://pypi.example.com, Protokolliert sie jedoch nicht. Sie müssen den Indexserver separat angeben (z. B. in pip.conf Wie in der Frage).

Beachten Sie, dass ~/.netrc Dem Benutzer gehören muss pip wird ausgeführt als. Es darf auch von keinem anderen Benutzer gelesen werden. Eine ungültige Datei wird stillschweigend ignoriert. Sie können sicherstellen, dass die Berechtigungen wie folgt korrekt sind:

chown $USER ~/.netrc
chmod 0600 ~/.netrc

Diese Berechtigungsprüfung gilt nicht vor Python 3.4, ist aber auf jeden Fall eine gute Idee.

Intern verwendet Pip Anfragen , wenn HTTP-Anfragen gestellt werden. request verwendet das Standardmodul netrc zum Lesen der Datei, sodass der Zeichensatz auf eine Teilmenge ASCII) beschränkt ist.

7
twm

Wie wäre es mit dem Speichern des Benutzernamens/Passworts als Umgebungsvariablen?

export username=username
export password=password

und auf sie in der pip.conf wie folgt verweisen:

[global]
index = https://$username:[email protected]/pypi
index-url = https://$username:[email protected]/simple
cert = /etc/ssl/certs/ca-certificates.crt

Ich verwende die geheimen Variablen von Gitlab CI zum Speichern von Anmeldeinformationen. Suchen Sie in Ihrem CI-Tool nach einem Äquivalent.

1
Ketan Vatsalya