Il modulo SSL in Python non è disponibile (su OSX)


21

Sto riscontrando problemi con l'esecuzione pip installin virtualenv su OSX 10.13. Ho già corso brew install openssle il percorso /usr/local/include/opensslindica ../opt/openssl/include/openssl. Qualcuno sa come risolvere questo problema? Questo è iniziato dopo che ho reinstallato pythonusando brew install.

pip è configurato con posizioni che richiedono TLS / SSL, tuttavia il modulo ssl in Python non è disponibile. La raccolta del cuscino non è riuscita a recuperare l'URL https://pypi.python.org/simple/pillow/ : si è verificato un problema durante la conferma del certificato ssl: impossibile connettersi all'URL HTTPS perché il modulo SSL non è disponibile. - skipping Impossibile trovare una versione che soddisfi i requisiti Pillow (dalle versioni:) Nessuna distribuzione corrispondente trovata per Pillow

AGGIORNAMENTO: Ecco alcune altre informazioni:

 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

Sì, ho installato sia 3.6.5_1 che 3.7.4_1 in quanto a volte potrei dover passare da uno all'altro.

 brew unlink openssl
Unlinking /usr/local/Cellar/openssl/1.0.2s... 0 symlinks removed

Inizia con mostrare il risultato which python, which pip, python --version, pip --version. Quindi, l'ultima volta che ho controllato, opensslera solo il barile, quindi /usr/local/include/opensslnon dovrebbe essere presente, corri brew unlink openssl.
ivan_pozdeev,

@ivan_pozdeev Certo, ho aggiunto l'output. Ho già provato brew unlink.
John M.

Risposte:


54

Il sslmodulo e la sua estensione C sottostante sembrano essere parte della pythonformula:

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

quindi mancare molto probabilmente significa corruzione dell'installazione del pacchetto che brew reinstall pythondovrebbe essere corretta.


Si noti inoltre che mentre Homebrew consente la coesistenza di più versioni, la sua logica di installazione non è del tutto progettata per mantenere operative le versioni alternative a meno che non vengano installate tramite una formula con versione (e ad esempio rimuovendo regolarmente le vecchie versioni nel normale brew cleanup).

Quindi considera di utilizzare pyenv(disponibile anche tramite brew) se devi passare di routine tra le versioni di Python - o qualche rubinetto di terze parti che offre formule con versione per esso.


8
Grazie! brew reinstalllo risolve davvero.
John M.

11

Mac OSX Catalina (e lo stesso problema su OSX Mojave) Pyenv

Per chiunque stia cercando questo argomento, ho avuto lo stesso problema di presentazione, ma avevo installato Python tramite Homebrew e Pyenv !! Sarebbe stato meglio (IMO) usare semplicemente Pyenv per gestire facilmente le versioni. Come menzionato da @ivan_pozdeev nella loro risposta, ma ecco alcuni dettagli che potresti desiderare.

Se la tua situazione è simile, nessuna delle soluzioni di cui sopra sarebbe abbastanza per sistemare le cose. Parzialmente sono stato aiutato da una risposta relativa a Pyenv qui: https://stackoverflow.com/a/51797298/3084820 Mi è capitato anche di averlo pyenv-virtualenvinstallato, menzionando anche quello, poiché è comune usare questi due insieme.

Alla fine ho preso le seguenti misure per risolvere il problema:

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

Ora, per un'installazione pulita gestibile con Pyenv:

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

Questo mi ha fornito un'installazione pulita e funzionante di Python 3.6.10 e, se avessi voluto o necessario, avrei potuto installare una versione diversa e passare da Pyenv.


Penso di essere nella stessa situazione. Ora, è necessario brew uninstall pythonse stai solo usando pyenv? O questo crea un conflitto da qualche parte? Inoltre, ho provato brew uninstall pythone mi ha lanciato il messaggio di errore "Errore: rifiuto di disinstallare /usr/local/Cellar/python/3.7.7 perché è richiesto da [un gruppo di altri pacchetti]". Probabilmente è sicuro andare avanti con il suggerimento di brew uninstall --ignore-dependencies python, ma sono comunque titubante. Non ricordo come ho usato questa versione di Python e se in qualche modo la sto ancora usando.
Antoine

@Antoine, credo di essere stato in grado di risolvere questo problema in Pyenv senza reinstallare Python con brew. Ho tuttavia reinstallato una versione specifica di Python con Pyenv: pyenv uninstall 3.6.6 pyenv install 3.6.6 pyenv global 3.6.6
Wronk

@wronk grazie per il tuo contributo! Sembra (ma non sono del tutto sicuro) che il problema che avevo in qualche modo è scomparso eseguendo brew uninstall python anche se ha gettato l'errore che non avrebbe disinstallato Python. Forse il comando ha comunque effettuato una pulizia preliminare, prima di decidere che non sarebbe andato avanti con la disinstallazione di Python? O forse c'è qualcos'altro che ho fatto. Ad ogni modo, sto ancora riscontrando un problema diverso con un'altra versione di Python e penso che reinstallerò quella versione come suggerisci tu.
Antoine,

2

Ho avuto un problema simile con Catalina e non sono riuscito a far funzionare la homebrew reinstall. Ho provato diverse cose.

brew reinstall openssl
brew reinstall pyenv
brew reinstall pyenv-virtualenv

Alla fine l'unica cosa che ha funzionato per me è stata quella di disinstallare completamente sia le installazioni di Python sottostanti sia quindi reinstallare tutto.

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

non brew uninstall pyenv pyenv-virtualenvsi rimuovono tutti gli ambienti virtuali come suggerito dal vostro pyenv uninstall 3.x.x?
Antoine

0

Ho lo stesso problema, ma reinstallare non ha funzionato per me.

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

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

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


2
Benvenuti nello stack di overflow! Potresti voler modificare la tua risposta per formattare il tuo codice. Ad esempio, 4 spazi prima della riga di codice lo contrassegneranno come codice. Potresti voler leggere la guida alla formulazione per capire meglio come contrassegnare correttamente le tue domande e risposte. Avrai maggiori possibilità con loro se sono ben formattati.
rvbarreto,

0

Ho avuto lo stesso errore ed era perché stavo usando Python 3.6.5 nel mio ambiente pyenv. Il trattamento di seguito ha funzionato per me.

pyenv install 3.7.3
pyenv global 3.7.3

0

Ho anche avuto questo errore e l'ho risolto con brew update && brew upgrade


0

La mia soluzione è reinstallare pyenv e python

 brew uninstall pyenv pyenv-virtualenv
 brew install pyenv pyenv-virtualenv
 pyenv uninstall 3.6.5
 pyenv install 3.6.5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.