我在OSX 10.13上的virtualenv中运行pip install
时遇到问题。我已经运行过brew install openssl
,路径/usr/local/include/openssl
指向../opt/openssl/include/openssl
。有谁知道如何解决这一问题?在我使用python
重新安装brew install
之后,这种情况开始发生。
pip配置了需要TLS / SSL的位置,但是ssl Python中的模块不可用。收集枕头无法获取 URL https://pypi.python.org/simple/pillow/:出现问题 确认ssl证书:无法连接到HTTPS URL,因为 SSL模块不可用。 -跳过找不到版本 满足枕头要求(从版本:)无匹配项 找到枕头的分布
更新:这是更多信息:
✗ 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
是的,我同时安装了3.6.5_1和3.7.4_1,因为有时可能需要在两者之间进行切换。
✗ brew unlink openssl
Unlinking /usr/local/Cellar/openssl/1.0.2s... 0 symlinks removed
答案 0 :(得分:29)
Mac OSX Catalina(和OSX Mojave上的同一问题)Pyenv
对于搜索此主题的任何人,我都遇到同样的问题,但是通过Homebrew和Pyenv都安装了Python!仅使用Pyenv轻松管理版本会更好(IMO)。正如@ivan_pozdeev在回答中提到的那样,但您可能需要这里的一些细节。
如果您的情况类似,则以上任何一种解决方案都不足以解决问题。与Pyenv相关的答案在一定程度上帮助了我:https://stackoverflow.com/a/51797298/3084820我也碰巧安装了pyenv-virtualenv
,因此也要提一下,因为经常将两者一起使用。
我终于采取了以下步骤来解决该问题:
brew uninstall python
rm -rf $(pyenv root)
brew uninstall pyenv-virtualenv # you may not have this installed, but...
brew uninstall pyenv
现在,对于可以使用Pyenv管理的全新安装:
brew install pyenv
pyenv install 3.6.10 (or whatever version you want)
这为我提供了一个干净,可运行的Python 3.6.10安装程序,并且如果我想要或需要的话,我可以安装其他版本并在Pyenv之间切换。
答案 1 :(得分:22)
ssl
模块及其基础C扩展似乎是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'>
因此丢失它很可能意味着brew reinstall python
应该修复的软件包安装损坏。
还要注意,尽管Homebrew允许多个版本共存,但是its installation logic isn't quite designed to keep the alternative versions operational除非通过版本化的公式安装(例如,定期删除常规brew cleanup
中的旧版本)。
因此,如果您需要在Python版本之间进行常规切换,或考虑使用一些提供其版本化公式的第三方水龙头,请考虑使用pyenv
(也可以通过brew
获得)。
答案 2 :(得分:5)
我在Catalina上遇到了类似的问题,无法重新安装自制软件。我尝试了几件事。
brew reinstall openssl
brew reinstall pyenv
brew reinstall pyenv-virtualenv
对我来说,唯一有效的方法是完全卸载基础Python安装程序,然后重新安装所有内容。
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
答案 3 :(得分:4)
我的解决方法是重新安装pyenv和python
brew uninstall pyenv pyenv-virtualenv
brew install pyenv pyenv-virtualenv
pyenv uninstall 3.6.5
pyenv install 3.6.5
答案 4 :(得分:4)
这个问题也可能是因为您的python发行版是使用错误版本的openssl编译的。
仅在2.7.13、3.5.3和Python中添加了对OpenSSL 1.1.x的支持。 3.6.0(请参阅https://github.com/pyenv/pyenv/issues/950#issuecomment-562366902)
因此,如果您要安装旧版本的Python,则必须先使用brew卸载新版本的openssl,然后才能使用pyenv安装旧版本的Python
brew uninstall --ignore-dependencies openssl@1.1
pyenv uninstall 3.5.2 # deinstall old versions compiled with the wrong version of openssl
pyenv install 3.5.2
另一方面,如果要安装Python的较新版本,请确保已安装可用的最新版本的openssl,然后再使用pyenv安装它们:
brew upgrade openssl
pyenv uninstall 3.7.4 # deinstall old versions compiled with the wrong version of openssl
pyenv install 3.7.4
答案 5 :(得分:1)
我有同样的错误,这是因为我在pyenv环境中使用python 3.6.5。 以下治疗对我有用。
pyenv install 3.7.3
pyenv global 3.7.3
答案 6 :(得分:0)
我也遇到了这个错误,并用brew update && brew upgrade