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

Py_*_*ion 37 pip python-venv python-3.6

(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/activate

试图安装pep8

(py36venv)pip3安装pep8

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

无法获取URL https://pypi.python.org/simple/pep8/:确认ssl证书时出现问题:无法连接到HTTPS URL,因为

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

Py_*_*ion 53

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

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
Run Code Online (Sandbox Code Playgroud)

如果看到以下错误 -

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

尝试:

sudo apt-get install zlib1g-dev
Run Code Online (Sandbox Code Playgroud)

验证:

在python3.6中创建virtualenv:

python3.6 -m venv testenv
source testenv/bin/activate
pip install pep8
Run Code Online (Sandbox Code Playgroud)

使用点子:

(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)
Run Code Online (Sandbox Code Playgroud)

  • -j [jobs], - job [= jobs]指定要同时运行的作业(命令)数.如果有多个-j选项,则最后一个选项有效.如果在没有参数的情况下给出-j选项,make将不会限制可以同时运行的作业数.希望它有用,有关更多信息,请参阅make上的man页面 (4认同)
  • 你是说如果用`libssl-dev`编译,你需要重新安装吗? (2认同)

mav*_*ves 13

当我尝试使用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
Run Code Online (Sandbox Code Playgroud)

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

如果您遇到与我相同的问题,则表明在运行时会出现类似的问题 make

The necessary bits to build these optional modules were not found: _ssl
Run Code Online (Sandbox Code Playgroud)

安装openssl

brew install openssl
brew unlink openssl && brew link openssl --force
Run Code Online (Sandbox Code Playgroud)

更改模块/设置或模块/ 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
Run Code Online (Sandbox Code Playgroud)

鉴于这是openssl的位置

设置环境变量

export CFLAGS="-I$(brew --prefix openssl)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib"
Run Code Online (Sandbox Code Playgroud)

再次制作和安装

运行

./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo
Run Code Online (Sandbox Code Playgroud)

再次为我做了伎俩


Cla*_*dio 6

运行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.
Run Code Online (Sandbox Code Playgroud)

什么解决了的问题(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
                         )
Run Code Online (Sandbox Code Playgroud)

  • 很高兴我找到了你的答案,它为我解决了这个问题(Ubuntu 16.04) (2认同)

小智 6

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

sudo yum install openssl-dev
Run Code Online (Sandbox Code Playgroud)

然后:

./configure --enable-optimizations
make altinstall
Run Code Online (Sandbox Code Playgroud)

现在pip3.6有效:-)


ozc*_*nya 6

我已经在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
Run Code Online (Sandbox Code Playgroud)

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

 cd /opt/Python3.6/
./configure
 make 
sudo make install
Run Code Online (Sandbox Code Playgroud)

注意
如果通过ppa安装了Python3.6,请重新安装;否则,请重新安装。

sudo apt-get install python3.6
Run Code Online (Sandbox Code Playgroud)

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