43

(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

通过以下方式创建 virtualenv:

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 URL,因为

SSL 模块不可用。- 跳过找不到满足要求 pep8 的版本(来自版本:)没有找到 pep8 的匹配分布

4

6 回答 6

58

我按照以下步骤在 ubuntu 14.04 中安装 python3.6 并且 virtualenv pip 安装工作正常。

Python 3.6 安装:

sudo apt-get install python3-dev libffi-dev libssl-dev
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

如果看到以下错误——

zipimport.ZipImportError:无法解压缩数据;zlib 不可用 make: *** [altinstall] 错误 1

尝试:

sudo apt-get install zlib1g-dev

验证:

在python3.6中创建virtualenv:

python3.6 -m venv testenv
source testenv/bin/activate
pip install pep8

使用点子:

(testenv) vagrant@pvagrant-dev-vm:~$ pip install pep8
*Collecting pep8
  Downloading pep8-1.7.0-py2.py3-none-any.whl (41kB)
    100% |████████████████████████████████| 51kB 4.1MB/s
Installing collected packages: pep8
Successfully installed pep8-1.7.0*

(testenv) vagrant@pvagrant-dev-vm:~$ pip list

pep8 (1.7.0) 
pip (9.0.1)
setuptools (28.8.0)
于 2017-01-11T21:37:26.147 回答
14

当我尝试使用 python3.6.0 创建虚拟环境时,我偶然发现了同样的问题。这是我针对 Mac OS X 10.12.2 的解决方案(Py_minion 评论非常接近):

设置

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

./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"

重新制作并安装

跑步

./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo

再次为我做了伎俩

于 2017-02-13T23:11:49.650 回答
7

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

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.

在我的情况下(Linux Mint 18.1,openssl 已安装)解决问题的方法是编辑Python-3.6.0 文件夹中的 setup.py,在其中添加openssl 安装将我系统上的 ssl.h 文件放入的路径( /usr/include/openssl/ssl.h )。这里我添加了行'/usr/include' 的部分:

    # 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
                         )
于 2017-03-14T23:52:14.457 回答
7

我已经在 Ubuntu-16.04.1 上解决了这个问题。首先,您需要安装必要的库。要安装打开的终端(Ctrl++ AltT,然后输入;

 sudo apt-get install build-essential checkinstall
 sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

之后,转到您的 python 文件所在的目录,然后重新配置并重新安装 python3.6 。

 cd /opt/Python3.6/
./configure
 make 
sudo make install

注意
如果您是通过 ppa 安装 Python3.6,请重新安装;

sudo apt-get install python3.6

现在你应该可以使用pip3.6

于 2018-02-10T20:25:36.107 回答
6

在 CentOS 7 下从源代码构建 Python 3.6.1 时,我遇到了同样的错误。对于 CentOS7,我必须首先:

sudo yum install openssl-dev

然后:

./configure --enable-optimizations
make altinstall

现在pip3.6工作:-)

于 2017-06-12T07:23:59.530 回答
1

一个完整的脚本可以在这里找到

安装先决条件

对于 RHEL/CentOS

sudo yum -y install gcc gcc-c++ zlib zlib-devel libffi-devel openssl-devel wget

对于 Ubuntu/Debian

sudo apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev wget

下载 Python

修改你想要的python版本

Python 版本

cd /var/tmp sudo wget https://www.python.org/ftp/python/3.x.x/Python-x.x.x.tgz sudo tar xf Python-3.*.tgz cd Python-3*

配置/制作/安装

sudo ./configure --enable-optimizations --enable-shared --prefix=/usr/local sudo make && make altinstall

清理共享库并添加到路径

在运行并行脚本时,剥离调试符号的共享库可以加快执行速度。

sudo make && make altinstall sudo strip /usr/local/lib/libpython3.7m.so.1.0 sudo echo 'export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib' >> /etc/profile.d/python.sh sudo echo 'export PATH=${PATH}:~/usr/local/bin/' >> /etc/profile.d/python.sh sudo echo '/usr/local/lib' >> /etc/ld.so.conf sudo ldconfig

参考

于 2018-02-06T18:13:03.570 回答