Puis-je me déplacer en utilisant «pip install --cert»?

21

Essayer de déterminer s'il y a un moyen que je peux éviter d'utiliser l'indicateur --cert pour pip lorsque j'installe des packages au travail. Il y a un problème avec le proxy qui me permet uniquement de télécharger les packages dont j'ai besoin lorsque je fournis cet indicateur, malgré l'ajout et l'exécution du mycert.crtfichier ./usr/local/share/ca-certificatessudo update-ca-certificates

Un exemple des messages que je vois est:

$ pip install "virtualenv>=1.10.1"
Downloading/unpacking virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/ when looking for download links for virtualenv>=1.10.1
  Cannot fetch index base URL https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not find any downloads that satisfy the requirement virtualenv>=1.10.1
Cleaning up...
No distributions at all found for virtualenv>=1.10.1
Storing complete log in /tmp/tmpwW5qXD

Cela peut être résolu à l'aide de:

pip install --cert=/usr/local/share/ca-certificates/mycert.crt

Cependant, je préférerais ne pas avoir à le faire (car je suis sûr que d'autres applications se heurtent à ce problème).

J'utilise Linux Mint 15 (bien que j'avais précédemment eu des problèmes très similaires sur Ubuntu 12.04), pip version 1.4.1.

Ian Lee
la source
Cela pourrait être un doublon potentiel de ce stackoverflow.com/questions/19377045/… .. Je ne suis pas sûr de la politique d'agrégation, etc.
Ryan

Réponses:

9

Vous pouvez définir cela via le fichier de configuration pip, qui se trouve dans $HOME/.pip/pip.confou %APPDATA%\pip\pip.inisur Windows:

[global]
cert = /usr/local/share/ca-certificate/mycert.crt

Ce fichier vous permet de définir essentiellement tous les indicateurs utilisés par pip. La documentation complète se trouve à https://pip.pypa.io/en/latest/user_guide/#configuration

Ryan
la source
2
Je pense que votre commentaire sur mon message d'origine conduit à la vraie réponse, qui est que pip n'utilise pas les certificats système. C'est une bonne solution, bien qu'elle rencontre des problèmes lorsque je bascule entre les environnements de travail et domestique (via VPN). Plus un problème avec le cert que la solution.
Ian Lee
1
Lien mis à jour vers la configuration: pip.pypa.io/en/latest/user_guide.html#configuration
sequoia
5

Pour moi, aucune des solutions de contournement du fichier de configuration n'a fonctionné. J'utilise pip 1.5.4 sur Ubuntu 14.04

Ce qui a finalement fonctionné pour moi, c'est d'installer le certificat sur le système en premier (pour moi sur Ubuntu, ce serait)

sudo cp ~/my_cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Le précédent met automatiquement à jour le fichier de l'ensemble (la vérification en bas de /etc/ssl/certs/ca-certificates.crtvous devrait maintenant voir le même certificat que dans my_cert.crt)

Utilisez maintenant ce chemin dans PIP_CERT. Et ajoutez-le à mon .bashrc:

echo export PIP_CERT=/etc/ssl/certs/ca-certificates.crt >> ~/.bashrc

AVERTISSEMENT : j'ai déjà posté cette réponse dans SO (même réponse que dans le "lien éventuellement dupliqué ci-dessus", mais au début je n'ai pas trouvé l'autre (réponse éventuellement dupliquée) ... donc si quelqu'un comme moi arrive ici en premier, alors cela pourrait aider.

Peut-être que j'enfreins une sorte de règles pour publier deux fois la même réponse, une en SO et l'autre en superutilisateur. Si oui, désolé.

andzep
la source
2

Cela a fonctionné pour moi sans avoir besoin de savoir où se trouve le fichier de configuration:

python -m pip config set global.cert C:\\Path\\cert.crt

Je crois que vous avez besoin de la version 10+ de pip, que vous pouvez trouver avec:

 python -m pip --version

La sortie de la commande config set renvoie ensuite le nom du fichier de configuration pour votre commodité

avatarofhope2
la source