web-dev-qa-db-fra.com

Module SSL dans Python n'est pas disponible (sur OSX)

J'ai du mal à courir pip install dans un virtualenv sur OSX 10.13. J'ai déjà exécuté brew install openssl et le chemin /usr/local/include/openssl pointe vers ../opt/openssl/include/openssl. Est-ce que quelqu'un sait comment réparer ceci? Cela a commencé après la réinstallation de python à l'aide de brew install.

pip est configuré avec des emplacements qui nécessitent TLS/SSL, cependant le module ssl dans Python n'est pas disponible. La collecte de l'oreiller n'a pas pu récupérer l'URL https://pypi.python.org/ simple/pillow / : Un problème est survenu lors de la confirmation du certificat ssl: impossible de se connecter à l'URL HTTPS car le module SSL n'est pas disponible. - ignorer Impossible de trouver une version qui satisfait à l'exigence Pillow (à partir des versions:) Non distribution correspondante trouvée pour Oreiller

MISE À JOUR: Voici quelques informations supplémentaires:

✗ which python
/usr/local/opt/python/libexec/bin/python
✗ which pip
/usr/local/opt/python/libexec/bin/pip
✗ python --version
Python 3.7.4
✗ pip --version
pip 19.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
✗ brew info python
python: stable 3.7.4 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5_1 (4,795 files, 100.0MB)
  Poured from bottle on 2019-10-08 at 14:39:37
/usr/local/Cellar/python/3.7.4_1 (3,903 files, 60.6MB) *
  Poured from bottle on 2019-10-08 at 14:37:10
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb

Oui, les versions 3.6.5_1 et 3.7.4_1 sont installées, car je dois parfois basculer entre les deux.

✗ brew unlink openssl
Unlinking /usr/local/Cellar/openssl/1.0.2s... 0 symlinks removed
21
John M.

Le module ssl ainsi que son extension C sous-jacente semblent faire partie de la formule python:

Mac-Admin:~ admin$ python3
Python 3.7.4 (default, Sep  7 2019, 18:27:02) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> ssl
<module 'ssl' from '/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py'>
>>> import _ssl
>>> _ssl
<module '_ssl' from '/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_ssl.cpython-37m-darwin.so'>

donc le fait de le manquer signifie probablement une corruption de l'installation du package qui brew reinstall python devrait corriger.


Notez également que même si Homebrew permet à plusieurs versions de coexister, sa logique d'installation n'est pas tout à fait conçue pour garder les versions alternatives opérationnelles sauf si elles sont installées via une formule versionnée (et par exemple, supprime régulièrement les anciennes versions dans la version régulière). brew cleanup).

Pensez donc à utiliser pyenv (également disponible via brew) si vous avez besoin de basculer régulièrement entre Python versions - ou un robinet tiers qui propose des formules versionnées) pour ça.

47
ivan_pozdeev

Mac OSX Catalina (et même problème sur OSX Mojave) Pyenv

Pour tous ceux qui recherchent ce sujet, j'ai eu le même problème de présentation, mais j'avais Python installé via Homebrew et Pyenv !! Il aurait été préférable (IMO) d'utiliser simplement Pyenv pour gérer facilement les versions. Comme mentionné par @ivan_pozdeev dans leur réponse, mais voici quelques détails que vous pourriez souhaiter.

Si votre situation est similaire, aucune des solutions ci-dessus ne suffirait à remettre les choses en ordre. En partie, j'ai été aidé par une réponse liée à Pyenv ici: https://stackoverflow.com/a/51797298/308482 Il m'est également arrivé d'avoir pyenv-virtualenv installé, mentionnant cela également, car il est courant d'utiliser ces deux éléments ensemble.

J'ai finalement pris les mesures suivantes pour résoudre le problème:

brew uninstall python
rm -rf $(pyenv root)
brew uninstall pyenv-virtualenv   # you may not have this installed, but...
brew uninstall pyenv

Maintenant, pour une installation propre et gérable avec Pyenv:

brew install pyenv
pyenv install 3.6.10  (or whatever version you want)

Cela m'a donné une installation propre et fonctionnelle de Python 3.6.10, et si je le voulais ou en avais besoin, je pouvais installer une version différente et basculer entre avec Pyenv.

6
Matt Morgan

J'ai le même problème, mais la réinstallation n'a pas fonctionné pour moi.

⇒ quel python3
/usr/local/bin/python3 blamb @ cha-109164-l:/usr/local/bin | master⚡

⇒ quel pip3/usr/local/bin/pip3 blamb @ cha-109164-l:/usr/local/bin | master⚡

⇒ pip3 -V pip 19.3.1 depuis /usr/local/lib/python3.7/site-packages/pip (python 3.7) blamb @ cha-109164-l:/usr/local/bin | master⚡

⇒ python3 -V Python 3.7.0 blamb @ cha-109164-l:/usr/l

0
Bennie Lamb

J'ai également eu cette erreur et je l'ai corrigée avec brew update && brew upgrade

0
baskcat

J'ai eu un problème similaire avec Catalina et je n'ai pas pu faire réinstaller homebrew pour travailler. J'ai essayé plusieurs choses.

brew reinstall openssl
brew reinstall pyenv
brew reinstall pyenv-virtualenv

En fin de compte, la seule chose qui a fonctionné pour moi a été de désinstaller complètement les deux ainsi que les installations sous-jacentes python, puis de tout réinstaller.

brew uninstall pyenv pyenv-virtualenv
brew install pyenv pyenv-virtualenv
pyenv uninstall 3.x.x
pyenv install 3.x.x
pip install -r requirements.txt
0
charlton_austin

J'ai eu la même erreur et c'est parce que j'utilisais python 3.6.5 dans mon environnement pyenv. Le traitement ci-dessous a fonctionné pour moi.

pyenv install 3.7.3
pyenv global 3.7.3
0
Yasunari Nishi