SSL-Modul in Python ist nicht verfügbar (unter OSX)

21

Ich habe Probleme beim Ausführen pip installeiner virtuellen Umgebung unter OSX 10.13. Ich bin schon gelaufen brew install opensslund der Weg /usr/local/include/opensslzeigt auf ../opt/openssl/include/openssl. Weiß jemand, wie man das behebt? Dies begann, nachdem ich pythonusing neu installiert hatte brew install.

pip ist mit Speicherorten konfiguriert, die TLS / SSL erfordern. Das SSL-Modul in Python ist jedoch nicht verfügbar. Pillow sammeln Die URL https://pypi.python.org/simple/pillow/ konnte nicht abgerufen werden: Beim Bestätigen des SSL-Zertifikats ist ein Problem aufgetreten: Es kann keine Verbindung zur HTTPS-URL hergestellt werden, da das SSL-Modul nicht verfügbar ist. - Überspringen Es konnte keine Version gefunden werden, die die Anforderung Kissen erfüllt (aus Versionen :) Keine passende Verteilung für Kissen gefunden

UPDATE: Hier noch ein paar Infos:

 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

Ja, ich habe sowohl 3.6.5_1 als auch 3.7.4_1 installiert, da ich möglicherweise manchmal zwischen den beiden wechseln muss.

 brew unlink openssl
Unlinking /usr/local/Cellar/openssl/1.0.2s... 0 symlinks removed
John M.
quelle
Beginnen Sie mit , welche die Ausgabe von which python, which pip, python --version, pip --version. Dann, als ich das letzte Mal nachgesehen habe, opensslwar es nur ein Fass, /usr/local/include/opensslsollte also nicht anwesend sein, laufen brew unlink openssl.
ivan_pozdeev
@ivan_pozdeev Klar, ich habe die Ausgabe hinzugefügt. Ich habe es schon versucht brew unlink.
John M.

Antworten:

53

Das sslModul sowie die zugrunde liegende C-Erweiterung scheinen Teil der pythonFormel zu sein:

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

Wenn es also fehlt, bedeutet dies höchstwahrscheinlich eine Beschädigung der brew reinstall pythonPaketinstallation, die behoben werden sollte.


Beachten Sie auch, dass Homebrew zwar das gleichzeitige Vorhandensein mehrerer Versionen zulässt, die Installationslogik jedoch nicht darauf ausgelegt ist, die alternativen Versionen betriebsbereit zu halten, es sei denn, sie werden über eine versionierte Formel installiert (und z. B. werden alte Versionen routinemäßig regelmäßig entfernt brew cleanup).

Verwenden Sie daher pyenv(auch verfügbar über brew), wenn Sie routinemäßig zwischen Python-Versionen wechseln müssen - oder einem Drittanbieter-Tap, der versionierte Formeln dafür anbietet.

ivan_pozdeev
quelle
8
Vielen Dank! brew reinstallbehebt es in der Tat.
John M.
11

Mac OSX Catalina (und das gleiche Problem unter OSX Mojave) Pyenv

Für alle, die dieses Thema suchten, hatte ich das gleiche Präsentationsproblem, aber Python wurde sowohl über Homebrew als auch über Pyenv installiert !! Es wäre besser gewesen (IMO), nur Pyenv zu verwenden, um Versionen einfach zu verwalten. Wie von @ivan_pozdeev in ihrer Antwort erwähnt, aber hier sind einige Details, die Sie vielleicht wollen.

Wenn Ihre Situation ähnlich ist, würde keine der oben genannten Lösungen ausreichen, um Abhilfe zu schaffen. Teilweise hat mir eine Pyenv-Antwort hier geholfen: https://stackoverflow.com/a/51797298/3084820 Ich habe auch zufällig pyenv-virtualenvinstalliert, so dass ich das auch erwähne, da es üblich ist, diese beiden zusammen zu verwenden.

Ich habe schließlich die folgenden Schritte unternommen, um das Problem zu beheben:

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

Für eine saubere Installation, die mit Pyenv verwaltet werden kann:

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

Dies gab mir eine saubere, funktionierende Installation von Python 3.6.10, und wenn ich wollte oder musste, konnte ich eine andere Version installieren und zwischen Pyenv wechseln.

Matt Morgan
quelle
Ich denke, ich bin in der gleichen Situation. brew uninstall pythonIst es nun notwendig, wenn Sie nur verwenden pyenv? Oder führt dies irgendwo zu einem Konflikt? Außerdem habe ich es versucht brew uninstall pythonund es warf mir die Fehlermeldung "Fehler: Verweigerung der Deinstallation von /usr/local/Cellar/python/3.7.7, da dies von [einer Reihe anderer Pakete] benötigt wird". Es ist wahrscheinlich sicher, mit dem Vorschlag von fortzufahren brew uninstall --ignore-dependencies python, aber ich zögere trotzdem. Ich kann mich nicht erinnern, wie ich diese Version von Python verwendet habe und ob ich sie irgendwie noch benutze.
Antoine
@Antoine, ich glaube, ich konnte dies in Pyenv beheben, ohne Python mit Brew neu zu installieren. Ich habe jedoch eine bestimmte Python-Version mit pyenv neu installiert: pyenv uninstall 3.6.6 pyenv install 3.6.6 pyenv global 3.6.6
wronk
@wronk danke für deine Eingabe! Es scheint (aber ich bin nicht ganz sicher), dass das Problem, das ich irgendwie durch das Laufen verschwunden war, brew uninstall python obwohl es den Fehler warf, dass es Python nicht deinstallieren würde. Vielleicht hat der Befehl trotzdem eine vorläufige Reinigung durchgeführt, bevor entschieden wurde, dass die Deinstallation von Python nicht fortgesetzt werden soll? Oder vielleicht habe ich noch etwas anderes getan. Auf jeden Fall habe ich immer noch ein anderes Problem mit einer anderen Version von Python, und ich denke, ich werde diese Version neu installieren, wie Sie vorschlagen.
Antoine
2

Ich hatte ein ähnliches Problem mit Catalina und konnte Homebrew nicht wieder zum Laufen bringen. Ich habe mehrere Dinge ausprobiert.

brew reinstall openssl
brew reinstall pyenv
brew reinstall pyenv-virtualenv

Letztendlich funktionierte das einzige, was für mich funktionierte, sowohl die zugrunde liegenden Python-Installationen als auch die zugrunde liegenden Python-Installationen vollständig zu deinstallieren und dann alles neu zu installieren.

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
quelle
entfernt brew uninstall pyenv pyenv-virtualenvNICHT alle von Ihnen vorgeschlagenen virtuellen Umgebungen pyenv uninstall 3.x.x?
Antoine
0

Ich habe das gleiche Problem, aber die Neuinstallation hat bei mir nicht funktioniert.

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

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

⇒ pip3 -V pip 19.3.1 von /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
quelle
2
Willkommen beim Stapelüberlauf! Möglicherweise möchten Sie Ihre Antwort bearbeiten, um Ihren Code zu formatieren. Zum Beispiel markieren 4 Leerzeichen vor Ihrer Codezeile diese als Code. Vielleicht möchten Sie die Formatierungshilfe lesen, um besser zu verstehen, wie Sie Ihre Fragen und Antworten richtig markieren . Sie haben eine bessere Chance mit ihnen, wenn sie gut formatiert sind.
rvbarreto
0

Ich hatte den gleichen Fehler und das lag daran, dass ich Python 3.6.5 in meiner Pyenv-Umgebung verwendete. Die folgende Behandlung hat bei mir funktioniert.

pyenv install 3.7.3
pyenv global 3.7.3
Yasunari Nishi
quelle
0

Ich hatte auch diesen Fehler und habe ihn mit behoben brew update && brew upgrade

Baskcat
quelle
0

Mein Fix ist die Neuinstallation von Pyenv und Python

 brew uninstall pyenv pyenv-virtualenv
 brew install pyenv pyenv-virtualenv
 pyenv uninstall 3.6.5
 pyenv install 3.6.5
Tzatalin
quelle