J'essaie de trouver un moyen d'éviter d'utiliser l'indicateur --cert pour pépiner lorsque j'installe des paquets 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 du fichier mycert.crt
à /usr/local/share/ca-certificates
et l'exécution de Sudo update-ca-certificates
.
Voici un exemple des messages que je vois:
$ 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 en utilisant plutôt:
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'aie déjà eu des problèmes très similaires sous Ubuntu 12.04), version pip 1.4.1.
Vous pouvez définir cela via le fichier de configuration pip, qui se trouve dans $HOME/.pip/pip.conf
ou %APPDATA%\pip\pip.ini
sous 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 est à https://pip.pypa.io/en/latest/user_guide/#configuration
Pour moi, aucune solution de contournement de 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 (ce serait pour moi sur Ubuntu)
Sudo cp ~/my_cert.crt /usr/local/share/ca-certificates/
Sudo update-ca-certificates
La précédente met automatiquement à jour le fichier de l'ensemble (en vérifiant au bas de /etc/ssl/certs/ca-certificates.crt
, vous devriez maintenant voir le même certificat que dans my_cert.crt
)
Maintenant, utilisez ce chemin dans PIP_CERT
. Et ajoutez-le à mon .bashrc
:
echo export PIP_CERT=/etc/ssl/certs/ca-certificates.crt >> ~/.bashrc
DISCLAIMER: J'ai déjà posté cette réponse dans SO (même réponse que dans la section "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, cela pourrait aider.
Peut-être que je ne respecte pas les règles pour publier deux fois la même réponse, l'une dans SO et l'autre dans le superutilisateur. Si oui, désolé pour ça.
Cela a fonctionné pour moi sans avoir besoin de savoir où réside 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 affiche ensuite le nom du fichier de configuration pour votre commodité.