J'ai un dépôt PyPI privé. Existe-t-il un moyen de stocker les informations d'identification dans pip.conf
semblable à .pypirc
?
Ce que je veux dire. Actuellement en .pypirc
vous pouvez avoir une telle configuration:
[distutils]
index-servers = custom
[custom]
repository: https://pypi.example.com
username: johndoe
password: changeme
D'après ce que j'ai trouvé, vous pouvez mettre pip.conf
:
[global]
index = https://username:[email protected]/pypi
index-url = https://username:[email protected]/simple
cert = /etc/ssl/certs/ca-certificates.crt
Mais ici, je vois deux problèmes:
Existe-t-il un moyen de stocker le nom d'utilisateur et le mot de passe en dehors de l'URL?
Vous pouvez stocker des informations d'identification pour Pip à utiliser dans ~/.netrc
comme ça:
machine pypi.example.com
login johndoe
password changeme
Pip utilisera ces informations d'identification lors de l'accès à https://pypi.example.com
mais ne les enregistrera pas. Vous devez spécifier le serveur d'index séparément (comme dans pip.conf
comme dans la question).
Notez que ~/.netrc
doit appartenir à l'utilisateur pip
s'exécute en tant que. Il ne doit pas non plus être lisible par aucun autre utilisateur. Un fichier invalide est ignoré en silence. Vous pouvez vous assurer que les autorisations sont correctes comme ceci:
chown $USER ~/.netrc
chmod 0600 ~/.netrc
Cette vérification des autorisations ne s'applique pas avant Python 3.4, mais c'est une bonne idée dans tous les cas.
En interne, Pip utilise requêtes lors des requêtes HTTP. demandes utilise la bibliothèque standard netrc module pour lire le fichier, donc le jeu de caractères est limité à un sous-ensemble ASCII.
Que diriez-vous de stocker le nom d'utilisateur/mot de passe en tant que variables d'environnement,
export username=username
export password=password
et en y faisant référence dans le pip.conf comme ceci:
[global]
index = https://$username:[email protected]/pypi
index-url = https://$username:[email protected]/simple
cert = /etc/ssl/certs/ca-certificates.crt
J'utilise les variables secrètes de Gitlab CI pour stocker les informations d'identification. Recherchez un équivalent dans votre outil CI.