O módulo SSL em Python não está disponível (no OSX)

21

Estou com problemas para executar pip installuma virtualenv no OSX 10.13. Eu já corri brew install openssle o caminho /usr/local/include/opensslaponta para ../opt/openssl/include/openssl. Alguém sabe como consertar isso? Isso começou a acontecer depois que eu reinstalei o pythonuso brew install.

O pip é configurado com locais que exigem TLS / SSL, no entanto, o módulo ssl no Python não está disponível. Não foi possível obter o URL da coleta do travesseiro https://pypi.python.org/simple/pillow/ : Ocorreu um problema ao confirmar o certificado ssl: Não é possível conectar-se ao URL HTTPS porque o módulo SSL não está disponível. - ignorando Não foi possível encontrar uma versão que atenda ao requisito Pillow (das versões:) Nenhuma distribuição correspondente encontrada para Pillow

ATUALIZAÇÃO: Aqui estão mais algumas informações:

 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

Sim, tenho os 3.6.5_1 e 3.7.4_1 instalados, pois pode ser necessário alternar entre os dois às vezes.

 brew unlink openssl
Unlinking /usr/local/Cellar/openssl/1.0.2s... 0 symlinks removed
John M.
fonte
Comece com mostrando a saída de which python, which pip, python --version, pip --version. Então, da última vez que verifiquei, opensslera apenas barril, então /usr/local/include/opensslnão deveria estar presente, corra brew unlink openssl.
22419 Ivan_pozdeev #
@ivan_pozdeev Claro, adicionei a saída. Eu já tentei brew unlink.
John M.

Respostas:

53

O sslmódulo e sua extensão C subjacente parecem fazer parte da pythonfórmula:

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'>

então, falta isso provavelmente significa corrupção na instalação do pacote que brew reinstall pythondeve ser corrigida.


Observe também que, embora o Homebrew permita a coexistência de várias versões, sua lógica de instalação não é totalmente projetada para manter as versões alternativas operacionais, a menos que sejam instaladas por meio de uma fórmula com versão (e, por exemplo, remova rotineiramente as versões antigas regularmente brew cleanup).

Portanto, considere usar pyenv(também disponível via brew) se você precisar alternar rotineiramente entre versões do Python - ou algum toque de terceiros que ofereça fórmulas com versões.

ivan_pozdeev
fonte
8
Obrigado! brew reinstallcorrige isso de fato.
John M.
11

Mac OSX Catalina (e mesmo problema no OSX Mojave) Pyenv

Para quem procura este tópico, eu tive o mesmo problema de apresentação, mas o Python foi instalado via Homebrew e Pyenv !! Teria sido melhor (IMO) usar apenas o Pyenv para gerenciar versões facilmente. Como mencionado por @ivan_pozdeev na resposta, mas aqui estão alguns detalhes que você pode querer.

Se sua situação for semelhante, nenhuma das soluções acima seria suficiente para acertar as coisas. Parcialmente, fui ajudado por uma resposta relacionada ao Pyenv aqui: https://stackoverflow.com/a/51797298/3084820 Eu também pyenv-virtualenvinstalei, mencionando isso também, pois é comum usar esses dois juntos.

Finalmente, tomei as seguintes etapas para resolver o problema:

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

Agora, para uma instalação limpa gerenciável com Pyenv:

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

Isso me deu uma instalação limpa e funcional do Python 3.6.10 e, se eu quisesse ou precisasse, poderia instalar uma versão diferente e alternar com o Pyenv.

Matt Morgan
fonte
Eu acho que estou na mesma situação. Agora, é necessário brew uninstall pythonse você está apenas usando pyenv? Ou isso cria um conflito em algum lugar? Além disso, tentei brew uninstall pythone me lançou a mensagem de erro "Erro: Recusando-se a desinstalar /usr/local/Cellar/python/3.7.7 porque é exigido por [muitos outros pacotes]". Provavelmente, é seguro prosseguir com a sugestão de brew uninstall --ignore-dependencies python, mas ainda assim hesito. Não me lembro de como usei essa versão do python e, de alguma forma, ainda estou usando.
Antoine
@ Antonine, acredito que fui capaz de corrigir isso em pyenv sem reinstalar o python com o brew. No entanto, eu reinstalei uma versão específica do python com pyenv:pyenv uninstall 3.6.6 pyenv install 3.6.6 pyenv global 3.6.6
wronk
@wronk obrigado pela sua contribuição! Parece (mas não tenho muita certeza) que o problema que eu de alguma forma desapareceu ao executar brew uninstall python , embora tenha gerado o erro de que não desinstalaria o python. Talvez o comando tenha feito uma limpeza preliminar de qualquer maneira, antes de decidir que não iria adiante com a desinstalação do python? Ou talvez haja algo mais que eu fiz. De qualquer forma, ainda estou tendo um problema diferente com outra versão do python e acho que vou reinstalar essa versão, como você sugere.
Antoine
2

Eu tive um problema semelhante com Catalina e não foi possível obter a reinstalação do homebrew para funcionar. Eu tentei várias coisas.

brew reinstall openssl
brew reinstall pyenv
brew reinstall pyenv-virtualenv

Por fim, a única coisa que funcionou para mim foi desinstalar completamente as instalações python subjacentes e reinstalar tudo.

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
charlton_austin
fonte
se brew uninstall pyenv pyenv-virtualenvnão remover todos os ambientes virtuais como sugerido pelo seu pyenv uninstall 3.x.x?
Antoine
0

Eu tenho o mesmo problema, mas a reinstalação não funcionou para mim.

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

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

⇒ pip3 -V pip 19.3.1 em /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

Bennie Lamb
fonte
2
Bem-vindo ao estouro de pilha! Você pode editar sua resposta para formatar seu código. Por exemplo, quatro espaços antes da sua linha de código marcarão como um código. Você pode ler a ajuda da formatação para entender melhor como marcar corretamente suas perguntas e respostas. Você terá uma chance melhor com eles se eles estiverem bem formatados.
rvbarreto 29/01
0

Eu tive o mesmo erro e foi porque eu estava usando python 3.6.5 no meu ambiente pyenv. O tratamento abaixo funcionou para mim.

pyenv install 3.7.3
pyenv global 3.7.3
Yasunari Nishi
fonte
0

Eu também tive esse erro e o corrigi com brew update && brew upgrade

baskcat
fonte
0

Minha correção é reinstalar pyenv e python

 brew uninstall pyenv pyenv-virtualenv
 brew install pyenv pyenv-virtualenv
 pyenv uninstall 3.6.5
 pyenv install 3.6.5
tzatalin
fonte