【问题标题】:pip error while installing Python: "Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS"安装 Python 时出现 pip 错误:“忽略 ensurepip 失败:pip 8.1.1 需要 SSL/TLS”
【发布时间】:2016-06-09 10:21:07
【问题描述】:

我下载了 Python 3.5 源代码并运行了以下代码:

$ tar -xf Python-3.5.2.tar.xz
$ ./configure --with-ensurepip=upgrade
$ make
$ sudo make altinstall

make 之前进展顺利。当sudo make altinstall 运行时,它会打印:

Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS

出了什么问题?

【问题讨论】:

    标签: python installation


    【解决方案1】:

    您很可能没有在编译 Python 时支持 SSL/TLS - 这可能是因为您的系统上没有安装 SSL 开发依赖项。

    安装以下依赖,然后重新配置重新编译Python 3.5。

    Ubuntu

    apt-get install libssl-dev
    

    另外建议安装以下。

    apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libsqlite3-dev
    

    CentOS

    yum install openssl-devel
    

    另外建议安装以下。

    yum install zlib-devel bzip2-devel sqlite sqlite-devel openssl-devel
    

    【讨论】:

    • 我找到了解决办法,解决办法是在终端输入“python3”。
    • @eandersson 对于 CentOS,在相关错误的上下文中缺少 openssl-devel;其他软件包无关紧要,尽管我承认构建可能需要其他一些或所有软件包。
    • 是的,但建议将其他内容作为构建过程的一部分。不是绝对必要的,但也无害。
    • 在搜索了 8 个小时并尝试了十几种不同的修复程序后,这个 libssl-dev 修复程序终于奏效了。请尽可能多地投票。非常感谢安德森。已验证 - Ubuntu x64 16.04.1 LTS、Intel x64 芯片组、从源代码编译的 Python 3.6.0。
    • 在我的情况下,我必须在安装上述软件包后重新启动我的 centos-6.5。不确定,为什么。听起来可能很傻。
    【解决方案2】:

    请注意,除了 OpenSSL 1.1.0 版本(包含在 Ubuntu 18.04 存储库中,我不确定是否适用于其他 Linux 发行版)之外,还有可能存在编译问题的 python 版本(参见 this questionmy answer) ,简而言之:

    Python 3.4 和 3.5 的更改日志)

    【讨论】:

    • 没有 3.4 版本,甚至没有将与 openssl 1.1.0 一起安装的最新 3.4.9。将产生与 OP 完全相同的错误。当您有运行 Django 1.7.8 的遗留系统(或其他依赖于旧 python 模块的系统)时,您就完全不走运了。
    • OP 没有询问遗留系统和/或配置。因此我没有在我的回答中包含这个。
    • 这并不是批评,而是对遇到错误时遇到此问题的任何人的额外提示。我只是发现这个问题(和你的 awnser)是我搜索中最有用的地方,并想通过评论添加一个旁注。对不起,我不够清楚。
    • 我无法从 pyenv 或 asdf 安装 Python 3.4.10,出现与 OP 相同的错误 :( 看来我们再也无法安装这些 EOL 版本了。
    【解决方案3】:

    在 Ubuntu 18.04 上只有这对我有用

    sudo apt-get install libssl1.0
    

    【讨论】:

      【解决方案4】:

      CentOS

      如果您在安装 python 时没有openssl-devel,则不会安装 pip 8.1.1。 安装openssl-devel后,重新安装python。 这次它应该安装pip 只是文件。

      【讨论】:

        【解决方案5】:

        我尝试使用asdf 安装 Python 3.4.10,但出现以下错误:

        $ asdf install python 3.4.10
        python-build 3.4.10 /home/br0ke/.asdf/installs/python/3.4.10
        Downloading Python-3.4.10.tar.xz...
        -> https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tar.xz
        Installing Python-3.4.10...
        ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
        
        Please consult to the Wiki page to fix the problem.
        https://github.com/pyenv/pyenv/wiki/Common-build-problems
        
        
        BUILD FAILED (Fedora 30 using python-build 1.2.15-2-g22c02022)
        
        Inspect or clean up the working tree at /tmp/python-build.20191121110112.9959
        Results logged to /tmp/python-build.20191121110112.9959.log
        
        Last 10 log lines:
        (cd /home/br0ke/.asdf/installs/python/3.4.10/share/man/man1; ln -s python3.4.1 python3.1)
        if test "xupgrade" != "xno"  ; then \
            case upgrade in \
                upgrade) ensurepip="--upgrade" ;; \
                install|*) ensurepip="" ;; \
            esac; \
             ./python -E -m ensurepip \
                $ensurepip --root=/ ; \
        fi
        Ignoring ensurepip failure: pip 9.0.1 requires SSL/TLS
        

        这可能意味着我的系统中安装了太新的 OpenSSL 版本,而我正在尝试构建的 Python 不支持此版本。我设法使用以下步骤在我的 Fedora 30 机器上安装了 Python 3.4.10(默认具有 OpenSSL 1.1+):

        1. 如果安装了openssl-devel,请暂时删除它,因为它会与旧版本冲突:
        $ sudo dnf remove openssl-devel
        
        1. 安装兼容的 OpenSSL 1.0 包:
        $ sudo dnf install compat-openssl10 compat-openssl10-devel
        
        1. 构建 Python 3.4.10(我使用 asdf,但它也应该与 pyenv 一起使用):
        $ asdf install python 3.4.10
        
        1. 移除 compat 库并安装 modern 以便下次能够构建更新鲜的东西:
        $ sudo dnf remove compat-openssl10-devel
        $ sudo dnf install openssl-devel
        

        受到this workaround 的启发并得到Fedora community people 的帮助。

        【讨论】:

          【解决方案6】:

          如果您使用的是 RedHat Enterprise Linux,您可以使用这个:

          yum install openssl-devel -y
          

          【讨论】:

            【解决方案7】:

            如果你使用 Manjaro Linux,你可以使用这个:

            sudo pacman -S openssl,检查

            【讨论】:

              【解决方案8】:

              目前不支持 CentOS 或 RHEL 机器 Python3(3.7.0) ssl。

              Python 支持 pip 安装

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-05-18
                • 1970-01-01
                • 2017-04-27
                • 2018-04-15
                • 2018-09-22
                • 2015-12-22
                • 2022-08-07
                相关资源
                最近更新 更多