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:
Gibt es eine Möglichkeit, Benutzername und Passwort außerhalb der URL zu speichern?
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.
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.