【问题标题】:Recommended way to install pip(3) on centos7在 centos7 上安装 pip(3) 的推荐方式
【发布时间】:2018-10-28 18:06:47
【问题描述】:

我很想知道在当前版本的 centos7 (7.5.1804) 上为 python3.6 安装 pip3 的推荐方法(截至今天,2018 年 5 月),How to install pip in CentOS 7? 的接受答案似乎已经过时,因为:

yum search -v pip

输出(除其他外):

python2-pip.noarch : A tool for installing and managing Python 2 packages
Repo        : epel

python34-pip.noarch : A tool for installing and managing Python3 packages
Repo        : epel

python34-pip 似乎比How to install pip in CentOS 7? 的公认答案更简单(更新?):

sudo yum install python34-setuptools

sudo easy_install-3.4 pip

但是由于我机器上安装的 python 版本是 2.7.5 和 3.6.3 为什么是 python34-pip 而不是 python36-pip ? 3.4+ 的点数是否相同(直到当前的 3.6.3)?

【问题讨论】:

标签: python python-3.x pip python-3.6 centos7


【解决方案1】:

当我尝试在内置的centos7 python 2.7.5版本上安装python36时出现此错误:

Transaction check error:
  file /etc/rpm/macros.python from install of python-rpm-macros-3-32.el7.noarch conflicts with file from package python-devel-2.7.5-80.el7_6.x86_64

我用这些修复了它:

yum install python36
yum update python-devel
yum install python36-devel
easy_install-3.6 pip

【讨论】:

    【解决方案2】:

    截至 2019 年 8 月 22 日,CentOS 7 base repository 中现在有一个 python3-pip 软件包。 不再需要第三方存储库或软件包。

    安装python3-pip也会安装libtirpcpython3python3-libspython3-setuptools

    yum install --assumeyes python3-pip
    

    您现在可以验证版本(是的,it is old,但它来自基本存储库):

    $ pip3 --version
    pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
    

    如果您不想偏离python3-pip 包提供的文件,并且不想看到关于 pip 已旧的警告,请参阅https://stackoverflow.com/a/46288945/534275 以使消息静音。

    【讨论】:

    • 谢谢!这是唯一对我有用的指令。
    【解决方案3】:

    如果您看到 pip3 链接到 python2 路径:

    $ pip3 -V

    来自 /usr/lib/python2.7/site-packages/pip (python 2.7) 的 pip 8.1.2

    你可能会得到:

    $ pip3 install --upgrade pip

    TypeError: parse() 得到了一个意外的关键字参数“transport_encoding”

    然后尝试使用 hash -r 清除命令缓存。这对我有用:

    # Install Python 3:
    sudo yum install python36 -y
    
    # Install & Upgrade pip3
    sudo python36 -m pip install --upgrade pip
    
    # Validate pip3 installation:
    sudo python3.6 -m ensurepip
    #  Successfully installed pip-10.0.1 setuptools-39.0.1
    
    # Clear commands cache
    hash -r
    # might be required if getting in bash: /usr/bin/pip3: No such file or directory)
    
    pip3 -V
    # pip 19.0.3 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
    
    which pip3
    # /usr/local/bin/pip3
    
    pip2 -V
    # pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
    
    which pip2
    # /usr/local/bin/pip2
    
    # Install your Python3 module:
    sudo /usr/local/bin/pip3 install {required module for python3}
    

    【讨论】:

      【解决方案4】:

      试试这个::

      sudo yum update
      sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
      

      完美地为我工作。

      【讨论】:

        【解决方案5】:
        1. 3.4+ 的点数是否相同

          不,不是。单个 pip 安装服务于单个 Python 发行版(pip2.7/pip3.4/pip3.5 等)。

        2. 由于 Python 3.5,pip 已经与 python 发行版捆绑在一起,因此您可以只运行 python3.6 -m pip 而不是 pip

        3. CentOS 7 vanilla repo 中不提供 Python 3.6。当需要在 CentOS 上安装新的 Python 时,我通常会求助于IUS repo。它总是有最新的 Python 版本,the current one being 3.6.5。它还提供了一个通讯员pip package

          $ yum install https://centos7.iuscommunity.org/ius-release.rpm
          $ yum install python36u python36u-devel python36u-pip
          

          不幸的是,IUS doesn't offer a package for Python 3.7 yet 因此,如果您正在 CentOS 7 上寻找 Python 3.7,那么从源代码构建是您唯一的选择。

        编辑:当yum 不是一个选项时

        您应该更喜欢this answer 中描述的引导解决方案,因为它是安装工作pip 的最可靠方法。

        【讨论】:

        • 不知道,因为捆绑了 python 3.5 pip,这解决了我的问题,不知道为什么我被否决但谢谢。
        • 可能是因为它更适合superuserserverfault?然而,这还不足以让我投反对票;赞成。
        • Pip 没有捆绑在我的 CentOS7 机器上的 EPEL 版本的 python36 中,仅供参考。我必须使用 setuptools 包来获取它。
        • @xjsc16x 是的,它可以在 IUS 仓库中找到;这就是为什么我首先添加了这个答案。
        【解决方案6】:

        要在 CentOS 7 上为 python 3.6 安装 pip,您需要运行

        $ python3.6 -m ensurepip

        【讨论】:

        • 这是最新的解决方案,如果无法通过 yum 安装 pip,则应首选此解决方案。
        • 有关如何通过 EPEL 安装 python3.6 的更完整答案,请参见 EPEL Python 3.6 with pip on CentOS 7
        • 这是最好的答案。
        • 我只是用这个技巧大大简化了一些 Ansible 剧本(通过 shell 和命令模块); Ansible 可以使用我指定的 python3 解释器,但找不到它的 pip。这使它起作用,并减少了我需要的任务数量
        【解决方案7】:

        出于某种原因,Pip 未捆绑在 python 3.6 的 EPEL 版本中。我假设相当多的人(比如我)会因此找到这个页面。

        $ sudo yum install -y python36
        ...
        $ python36 -m pip
        /usr/bin/python36: No module named pip
        

        所以在这种情况下,setuptools 包是最简单的解决方案。

        $ sudo yum install python36-setuptools
        $ sudo easy_install-3.6 pip
        ...
        $ python36 -m pip --version
        pip 18.0 from /usr/local/lib/python3.6/site-packages/pip-18.0-py3.6.egg/pip (python 3.6)
        

        【讨论】:

          【解决方案8】:

          在 Centos 7 中遵循这些命令

          yum install python36
          yum install python36-devel
          yum install python36-setuptools
          easy_install-3.6 pip
          

          检查 pip 版本:

          pip3 -V
          pip 18.0 from /usr/local/lib/python3.6/site-packages/pip-18.0-py3.6.egg/pip (python 3.6)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-12-06
            • 1970-01-01
            • 1970-01-01
            • 2016-08-19
            • 1970-01-01
            • 2015-07-22
            • 1970-01-01
            相关资源
            最近更新 更多