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

pip3安装在虚拟环境中,python3.6由于ssl模块不可用而失败,pip,python-venv,python-3.6,Pip,Python Venv,Python 3.6,(py36venv)vagrant@pvagrant-dev vm:/vagrant/venvs$pip3安装pep8 pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用 收集pep8无法获取URL 当前位置确认时出现问题 ssl证书:无法连接到HTTPS URL,因为ssl模块 不可用。-跳过 找不到满足pep8要求的版本(从 版本:)找不到pep8的匹配发行版 背景信息-正在尝试移动到python 3.6 使用以下命令安装python3.6: wget tar-xvf

(py36venv)vagrant@pvagrant-dev vm:/vagrant/venvs$pip3安装pep8

pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用

收集pep8无法获取URL 当前位置确认时出现问题 ssl证书:无法连接到HTTPS URL,因为ssl模块 不可用。-跳过

找不到满足pep8要求的版本(从 版本:)找不到pep8的匹配发行版

背景信息-正在尝试移动到python 3.6

使用以下命令安装python3.6:

wget

tar-xvf-Python-3.6.0.tgz

cd Python-3.6.0
/配置--启用优化
make-j8sudo 制作altinstall Python 3.6

通过以下方式创建virtualenv:

蟒蛇3.6-m静脉py36venv

源py36venv/bin/activate

试图安装pep8

(py36venv)管道3安装pep8

pip配置了需要TLS/SSL的位置,但是SSL Python中的模块不可用。 收集pep8

无法获取URL:出现问题 正在确认ssl证书:无法连接到HTTPS URL,因为

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


我按照以下步骤在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 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
在python3.6中创建virtualenv:

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

(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)

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

安装程序 我通过以下步骤创建了环境: 下载python3.6.0 运行

解决方案 安装openssl 更改模块/设置或模块/设置.dist 您可以在下载的Python版本的目录中找到这些文件

在第209-211行中进行注释,如果需要,进行更改(我必须将SSL变量更改为我的openssl位置)

重新制作并安装 运行

./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo
/configure--前缀=`
制作
安装
mkvirtualenv--python=foo

我再次在shell输出中运行make reported给我的技巧:

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
                         )

在CentOS 7下从源代码构建Python 3.6.1时,我遇到了相同的错误。 在过去的七个世纪里,我必须首先:

sudo yum install openssl-dev
然后:

现在
pip3.6
works:-)

可以找到完整的脚本

安装先决条件 适用于RHEL/CentOS

sudo yum-y安装gcc-gcc++zlib-zlib-devel-libffi-devel-openssl-devel-wget

用于Ubuntu/Debian

sudo apt get-y安装构建基本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版本进行修改

cd/var/tmp
sudo wgethttps://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 optimization--enable shared--prefix=/usr/local
sudo make和make altinstall

清理共享库并添加到路径(&D) 在运行并行脚本时,剥离调试符号的共享库可以加快执行速度

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
sudoldconfig

参考文献

我已经在Ubuntu-16.04.1上解决了这个问题。 首先,您需要安装必要的库。要安装开放式终端(Ctrl+Alt+T),请键入

 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了,您是否安装了
libssl dev
,Makefile是否指向正确的ssl,是否在Makefile中启用了它?另请参见:未注释的以下内容-**SSL=/usr/local/SSL\u SSL.c \-DUSE\u SSL-I$(SSL)/include-I$(SSL)/include/openssl \-L$(SSL)/lib-lssl-lcrypto**如果您找到了解决方案,请随意回答您自己的问题。
make-j8
中的
做什么?-j[jobs],--jobs[=jobs]指定要同时运行的作业(命令)数。如果有多个-j选项,则最后一个选项有效。如果在没有参数的情况下给出-j选项,make将不会限制可以同时运行的作业数。希望对您有所帮助,有关更多信息,请参阅makeNote上的手册页:编译和安装需要相当长的时间(当然取决于您的系统)。这花了大约20分钟
    # 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
                         )
sudo yum install openssl-dev
./configure --enable-optimizations
make altinstall
 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
 cd /opt/Python3.6/
./configure
 make 
sudo make install
sudo apt-get install python3.6