【问题标题】:Can't pip install packages in python 3.6 due to ssl error由于 ssl 错误,无法在 python 3.6 中安装包
【发布时间】:2017-10-10 21:49:01
【问题描述】:

我正在使用远程服务器。当我尝试在我的虚拟环境中使用 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。

按照 Claudio 的建议,我考虑更改 setup.py 并在家中重新安装:

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

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

【问题讨论】:

  • 你可以尝试用本地openssl构建本地python 3。或者只是要求管理员为您安装一个打包好的 python 3。

标签: python ssl


【解决方案1】:

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

运行:

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

【讨论】:

  • 如果没有 root 访问权限,这将很困难。
  • 哦,对不起,跳过了问题中的那部分,我会更新答案
  • @pvg 已更新。 (看看这个答案stackoverflow.com/a/5939170/723891
  • 我不是问这个问题的人,虽然问题是关于 python 3,但他们似乎有一个使用 SSL 的工作 python 2。最明智的做法就是找一个有权限的人,让他们用包管理器安装 python 3。
【解决方案2】:

我遇到了同样的错误,但实际上我使用最新版本的 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

并重复上述 compilema​​ke install 步骤,并再次创建虚拟环境。这次一切正常!

【讨论】:

    【解决方案3】:

    在 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。

    【讨论】:

    • 不幸的是,这对我不起作用。 sudo make altinstall 给出以下错误。 /usr/src/Python-3.7.0/./Modules/_ssl.c:3674:未定义对SSL_CTX_get_default_passwd_cb' /usr/src/Python-3.7.0/./Modules/_ssl.c:3675: undefined reference to SSL_CTX_get_default_passwd_cb_userdata'collect2的引用:ld返回1退出状态make:*** [python]错误1
    【解决方案4】:

    我就是这样做的:

    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
    

    【讨论】:

    • 字面上花了 45 分钟,然后安装在我的 Ec2 上。谢谢
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 2021-06-01
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2021-11-16
      相关资源
      最近更新 更多