在使用Python3.6的虚拟环境中,由于SSL模块不可用,pip3安装失败。
在使用Python3.6的虚拟环境中,由于SSL模块不可用,pip3安装失败。
(py36venv) vagrant@pvagrant-dev-vm:/vagrant/venvs$ pip3 install pep8
配置的pip需要TLS/SSL,但是Python中的ssl模块不可用。
正在收集pep8 无法获取URL https://pypi.python.org/simple/pep8/:确认SSL证书时出现问题:无法连接到HTTPS URL,因为SSL模块不可用。 - 跳过
找不到满足pep8要求的版本(从版本中:)。找不到符合要求的分发版pep8。
背景信息 - 尝试切换到python 3.6。
使用以下命令安装python3.6:
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar -xvf Python-3.6.0.tgz
cd Python-3.6.0
./configure --enable-optimizations
make -j8
sudo make altinstall python3.6
创建虚拟环境:
python3.6 -m venv py36venv
source py36venv/bin/activate
尝试安装pep8:
(py36venv) pip3 install pep8
配置的pip需要TLS/SSL,但是Python中的ssl模块不可用。
正在收集pep8
无法获取URL https://pypi.python.org/simple/pep8/:确认SSL证书时出现问题:无法连接到HTTPS URL,因为SSL模块不可用。 - 跳过
找不到满足pep8要求的版本(从版本中:)。找不到符合要求的分发版pep8。
在尝试使用python3.6.0创建虚拟环境时,我遇到了与ssl模块不可用相关的问题。下面是我在Mac OS X 10.12.2上的解决方案(Py_minion的评论非常接近):
设置
我通过以下步骤创建了环境:
1. 下载python3.6.0
2. 运行以下命令:
./configure --prefix=<some_path>` make make install mkvirtualenv --python=<some_path/bin/python3.6> foo
基本上与这个链接中的方法类似:https://stackoverflow.com/a/11301911/1286093
如果运行make
时出现以下类似的错误信息,则表示你遇到了与我相同的问题:
The necessary bits to build these optional modules were not found: _ssl
解决方法
安装openssl
brew install openssl brew unlink openssl && brew link openssl --force
修改Module/Setup或Module/Setup.dist文件
你可以在下载的Python版本的目录中找到这些文件。
取消注释并在需要的情况下修改209-211行(我需要将SSL变量更改为我的openssl位置)。
SSL=/usr/local/opt/openssl <---- THIS DEPENDS ON YOUR INSTALLATION _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
假设这是openssl的位置。
设置环境变量
export CFLAGS="-I$(brew --prefix openssl)/include" export LDFLAGS="-L$(brew --prefix openssl)/lib"
重新运行make和make install
再次运行以下命令:
./configure --prefix=<some_path>` make make install mkvirtualenv --python=<some_path/bin/python3.6> foo
对于那些没有sudo和brew的用户,可以从openssl.org获取openssl。