Python'daki SSL modülü mevcut değil (OSX'te)


21

pip installOSX 10.13 üzerinde bir sanal ağda çalışırken sorun yaşıyorum . Zaten koştum brew install opensslve yol /usr/local/include/opensslişaret ediyor ../opt/openssl/include/openssl. Bunu nasıl düzeltebileceğini bilen var mı? Bu, pythonkullanarak yeniden yükledikten sonra olmaya başladı brew install.

pip, TLS / SSL gerektiren konumlarla yapılandırılır, ancak Python'daki ssl modülü kullanılamaz. Yastık Toplama URL getirilemedi https://pypi.python.org/simple/pillow/ : SSL sertifikası doğrulanırken bir sorun oluştu: SSL modülü mevcut olmadığından HTTPS URL'sine bağlanamıyor. - atlama Gereksinimi karşılayan bir sürüm bulunamadı Yastık (sürümlerden:) Yastık için eşleşen dağıtım bulunamadı

GÜNCELLEME: İşte biraz daha bilgi:

 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

Evet, 3.6.5_1 ve 3.7.4_1 sürümleri yüklüdür çünkü ikisi arasında geçiş yapmam gerekebilir.

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

Çıktısını gösteren başlayın which python, which pip, python --version, pip --version. Sonra, son kontrol ettiğimde, opensslsadece fıçı oldu, bu yüzden /usr/local/include/opensslmevcut olmamalı, koş brew unlink openssl.
ivan_pozdeev

@ivan_pozdeev Elbette, çıktıyı ekledim. Zaten denedim brew unlink.
John

Yanıtlar:


53

sslModül ayrıca altta yatan C uzantısı görünür bir parçası olduğu pythonformül:

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

bu yüzden eksik olması büyük olasılıkla brew reinstall pythondüzeltilmesi gereken paket kurulum bozulması demektir .


Ayrıca Homebrew birden fazla versiyonun bir arada var olmasına izin verirken , kurulum mantığının, versiyonlanmış bir formül aracılığıyla kurulmadıkları sürece alternatif versiyonları çalışır durumda tutacak şekilde tasarlanmadığını unutmayın (ve örneğin düzenli olarak eski versiyonları düzenli olarak kaldırmaz brew cleanup).

Bu nedenle , Python sürümleri veya bunun için sürüm formülleri sunan bazı üçüncü taraf muslukları arasında rutin olarak geçiş yapmanız gerekiyorsa pyenv(üzerinden de kullanılabilir brew) kullanmayı düşünün .


8
Teşekkürler! brew reinstallgerçekten düzeltir.
John M.

11

Mac OSX Catalina (ve OSX Mojave'de aynı sorun) Pyenv

Bu konuyu arayan herkes için aynı sunum sorunum vardı, ancak Python hem Homebrew hem de Pyenv üzerinden kuruldu! Sürümleri kolayca yönetmek için Pyenv'i kullanmak daha iyi olurdu (IMO). @İvan_pozdeev tarafından yanıtlarında belirtildiği gibi, ama isteyebileceğiniz bazı ayrıntılar.

Durumunuz benzerse, yukarıdaki çözümlerin hiçbiri işleri düzeltmek için yeterli olmaz. Kısmen burada Pyenv ile ilgili bir cevap bana yardımcı oldu: https://stackoverflow.com/a/51797298/3084820 Ben de pyenv-virtualenvyükledim, bu yüzden bu ikisini birlikte kullanmak yaygın olduğu için de bahsetmiştim.

Sonunda sorunu çözmek için aşağıdaki adımları attım:

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

Şimdi, Pyenv ile yönetilebilir temiz bir kurulum için:

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

Bu bana Python 3.6.10'un temiz ve çalışan bir kurulumunu verdi ve istersem veya ihtiyacım olursa farklı bir sürüm kurabilir ve Pyenv ile geçiş yapabilirim.


Aynı durumda olduğumu düşünüyorum. Şimdi, brew uninstall pythonsadece kullanıyorsanız pyenvmı gerekli ? Yoksa bu bir yerde bir çatışma mı yaratıyor? Ayrıca, denedim brew uninstall pythonve bana "Hata: /usr/local/Cellar/python/3.7.7 kaldırmayı reddetmek çünkü [diğer paketlerin bir demet] tarafından gerekli". Önerisi ile devam etmek muhtemelen güvenlidir brew uninstall --ignore-dependencies python, ancak yine de tereddüt ediyorum. Python'un bu sürümünü nasıl kullandığımı hatırlayamıyorum ve eğer bir şekilde hala kullanıyorum.
Antoine

@Antoine, ben demlemek ile python yeniden olmadan pyenv bu düzeltmek mümkün olduğuna inanıyorum. Ancak pyenv ile belirli bir python sürümünü yeniden yaptım: pyenv uninstall 3.6.6 pyenv install 3.6.6 pyenv global 3.6.6
wronk

@wronk girişiniz için teşekkürler! Görünüşe göre (ama tam olarak emin değilim) bir şekilde çalıştığım sorunun python'u kaldırmayacağı hatası atmasına brew uninstall python rağmen çalışarak ortadan kayboldu . Belki de komut, python'un kaldırılmasıyla devam etmeyeceğine karar vermeden önce yine de bir miktar ön temizlik yaptı? Ya da belki başka bir şey yaptım. Her halükarda, hala python'un başka bir sürümü ile farklı bir sorun yaşıyorum ve sanırım önerdiğiniz gibi bu sürümü yeniden yükleyeceğim.
Antoine

2

Catalina ile benzer bir sorun vardı ve homebrew yeniden işe alamadım. Birkaç şey denedim.

brew reinstall openssl
brew reinstall pyenv
brew reinstall pyenv-virtualenv

Sonuçta benim için çalışan tek şey, hem altta yatan python kurulumlarını hem de tamamen kaldırmak ve daha sonra her şeyi yeniden yüklemekti.

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

yok brew uninstall pyenv pyenv-virtualenvİSS'niz tarafından önerildiği gibi tüm sanal ortamları kaldırmak DEĞİL pyenv uninstall 3.x.x?
Antoine

0

Aynı sorunum var, ancak yeniden yükleme benim için çalışmadı.

⇒ hangi python3
/ usr / yerel / bin / python3 suçlamak @ cha-109164-l: / usr / local / bin | master⚡

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

⇒ pipus-V pip 19.3.1 /usr/local/lib/python3.7/site-packages/pip (python 3.7) suçlu @ cha-109164-l: / usr / local / bin | master⚡

⇒ python3 -V Python 3.7.0 suçlama @ cha-109164-l: / usr / l


2
Taşma yığını hoş geldiniz! Kodunuzu biçimlendirmek için yanıtınızı düzenlemek isteyebilirsiniz. Örneğin, kod satırınızdan önceki 4 boşluk onu kod olarak işaretler. Sorularınızı ve cevaplarınızı nasıl doğru bir şekilde işaretleyeceğinizi daha iyi anlamak için biçimlendirme yardımını okumak isteyebilirsiniz . İyi biçimlendirilmişlerse onlarla daha iyi bir şansınız olacaktır.
rvbarreto

0

Aynı hatayla karşılaştım ve bunun nedeni pyenv ortamımda python 3.6.5 kullanıyordum. Aşağıdaki tedavi benim için çalıştı.

pyenv install 3.7.3
pyenv global 3.7.3

0

Bu hatayı da aldım ve sorunu çözdüm brew update && brew upgrade


0

Benim düzeltmem pyenv ve python'u yeniden kurmak

 brew uninstall pyenv pyenv-virtualenv
 brew install pyenv pyenv-virtualenv
 pyenv uninstall 3.6.5
 pyenv install 3.6.5
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.