由于ssl错误,无法在python 3.6中pip安装包

时间:2017-05-11 18:28:36

标签: python ssl

我正在使用远程服务器。当我尝试在我的虚拟环境中使用pip安装任何东西时,我收到一个错误:

(venv) [barta@bivoj program]$ pip install -r requirements.txt 
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting joblib==0.11 (from -r requirements.txt (line 1))
  Could not fetch URL https://pypi.python.org/simple/joblib/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping

使用python 2.7,一切正常。我可以自己解决这个问题(我没有root权限)或者我是否需要联系管理员?

首先,当我在我的主文件夹中安装python 3.6时,我遇到了这个问题。我想问题可能是因为它在我的主文件夹中,所以我要求干净安装python 3.6。

我考虑更改setup.py并再次安装在我的家中,如Claudio所示:

pip3 installs inside virtual environment with python3.6 failing due to ssl module not available

但是我找不到任何openssl文件夹。 / usr / bin中有openssl,但这不是目录。我搜索了ssl.h文件,但没有找到它。

5 个答案:

答案 0 :(得分:9)

听起来你在没有libssl-dev的情况下从源代码构建了python。

执行命令

sudo apt-get install libssl-dev
sudo ./configure
sudo make altinstall

答案 1 :(得分:1)

在Ubuntu 16.04 / 18.04中测试

在Python-3.6.4 / Modules / Setup中取消注释以下行:

#   SSL=/usr/local/ssl
#   _ssl _ssl.c \
#       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#       -L$(SSL)/lib -lssl -lcrypto

然后重新编译包:

$ sudo ./configure --enable-optimizations
$ sudo make altinstall

还要确保已安装libssl-dev(这是debian的软件包,无论如何)。

这也适用于Python-3.7.x。

答案 2 :(得分:0)

我遇到了同样的错误,但实际上我使用最新版本的 python2.7.13 创建了 python环境,这个python版本是通过source安装的:

./configure --prefix /usr/bin/python2.7.13
make altinstall

然后创建 virtualenv

virtualenv --python=/usr/bin/python2.7.13/bin/python2.7 py2.7.13env

花了很多时间后,我发现一个名为libreadline6-dev的图书馆丢失了。所以安装它:

sudo apt-get install libreadline6-dev

并重复编译 make install 步骤,如上所述,并再次创建虚拟环境。这次一切都很好!

答案 3 :(得分:0)

这就是我的做法:

sudo apt-get install libssl-dev
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -xvf Python-3.6.5.tgz
cd Python-3.6.5/

./configure
sudo make
sudo make install

答案 4 :(得分:0)

如果是Windows,则需要安装OpenSSL https://slproweb.com/products/Win32OpenSSL.html