我正在使用远程服务器。当我尝试在我的虚拟环境中使用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文件,但没有找到它。
答案 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