首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pip3安装在虚拟环境中,由于ssl模块不可用,python3.6失败

pip3安装在虚拟环境中,由于ssl模块不可用,python3.6失败
EN

Stack Overflow用户
提问于 2017-01-05 16:00:54
回答 4查看 84.3K关注 0票数 43

(py36venv)流浪者@p迷航-dev-vm:/迷航/venvs$ pip3安装pep8 pip配置了需要TLS/SSL的位置,但是Python中的ssl模块不可用。 收集pep8无法获取https://pypi.python.org/simple/pep8/:确认ssl证书存在问题:无法连接到HTTPS,因为SSL模块不可用。-跳过 无法找到满足pep8需求的版本(来自版本:)没有为pep8找到匹配的发行版

背景信息-试图移动到python3.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 /配置--启用--优化 使-j8 sudo使altinstall python3.6

通过以下方法创建虚拟环境:

python3.6 -m venv py36venv 源py36venv/bin/激活

尝试安装pep8

(py36venv) pip3安装pep8 pip配置了需要TLS/SSL的位置,但是Python中的ssl模块不可用。收集pep8无法获取URL https://pypi.python.org/simple/pep8/:确认ssl证书存在问题:无法连接到HTTPS,因为 SSL模块不可用。-跳转找不到满足pep8要求的版本(来自版本:),没有为pep8找到匹配的发行版

EN

回答 4

Stack Overflow用户

发布于 2017-02-13 23:11:49

当我尝试使用python3.6.0创建一个虚拟环境时,我偶然发现了同样的问题。以下是我为MacOSX10.12.2提供的解决方案(Py_minion的评论非常接近):

设置

我通过以下步骤创建了这个环境:下载python3.6.0运行

代码语言:javascript
复制
./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo

所以基本上类似于:https://stackoverflow.com/a/11301911/1286093

如果您有与我相同的问题,那么在运行make时将是一个类似的行。

代码语言:javascript
复制
The necessary bits to build these optional modules were not found: _ssl

解决方案

安装openssl

代码语言:javascript
复制
brew install openssl
brew unlink openssl && brew link openssl --force

更改模块/设置或模块/Setup.dist

您可以在下载的Python版本的目录中找到这些文件。

注释,如果有必要,请更改第209-211行(我必须将SSL变量更改为openssl位置)。

代码语言:javascript
复制
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的位置

设置环境变量

代码语言:javascript
复制
export CFLAGS="-I$(brew --prefix openssl)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib"

重新制造和安装

正在运行

代码语言:javascript
复制
./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo

再一次为我做了个花招

票数 14
EN

Stack Overflow用户

发布于 2017-03-14 23:52:14

在shell输出中,运行make向我报告:

代码语言:javascript
复制
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm              
_sqlite3              _ssl                  _tkinter           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

解决了我的例子中的问题(LinuxMint18.1,openssl已经安装),正在编辑Python-3.6.0文件夹中的setup.py,在那里添加-- openssl安装将ssl.h文件放在我的系统中的路径( /usr/include/openssl/ssl.h )。在这里,我添加了一行'/usr/include'

代码语言:javascript
复制
    # Detect SSL support for the socket module (via _ssl)
    search_for_ssl_incs_in = [
                          '/usr/local/ssl/include/',
                          '/usr/contrib/ssl/include/',
                          '/usr/include/'
                         ]
    ssl_incs = find_file('openssl/ssl.h', inc_dirs,
                         search_for_ssl_incs_in
                         )
票数 7
EN

Stack Overflow用户

发布于 2017-06-12 07:23:59

在CentOS 7下的源代码中构建Python3.6.1时,我遇到了同样的错误。

代码语言:javascript
复制
sudo yum install openssl-dev

然后:

代码语言:javascript
复制
./configure --enable-optimizations
make altinstall

现在pip3.6工作:-)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41489439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档