在CentOS7上安装pip(3)的推荐方法

42

我想知道在当前版本的CentOS 7(7.5.1804)上,安装Python3.6所需的pip3推荐方法是什么(截至2018年5月)。如何在CentOS 7中安装pip?的回答似乎已经过时了,因为:

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 似乎是比 在CentOS 7中如何安装pip? 接受的答案更加简单的一种(新的?)方法:

sudo yum install python34-setuptools

sudo easy_install-3.4 pip

但由于我机器上已安装的 Python 版本为 2.7.5 和 3.6.3,那么为什么不是 python36-pip 而是 python34-pip ?pip 在 3.4+ 版本(直至当前版本3.6.3)中是否相同?


8个回答

53
  1. pip能在Python 3.4+上使用吗?

    不能。一个pip安装服务于单个Python分发(pip2.7/pip3.4/pip3.5等)。

  2. 自Python 3.5起,pip已经与Python分发一起捆绑,因此您只需运行python3.6 -m pip而不是pip

  3. CentOS 7原始存储库中没有Python 3.6。当需要在CentOS上安装新的Python时,我通常会转向IUS存储库。它总是拥有最新版本的Python,当前版本为3.6.5。它还提供了对应的pip

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

很遗憾,IUS 目前还没有Python 3.7的软件包,所以如果您想在CentOS 7上使用Python 3.7,只能从源代码构建。

编辑:当yum无法使用时

您应该选择此答案中描述的引导解决方案,因为它是获取可工作的pip的最可靠方法。


不知道自从Python 3.5以来pip已经捆绑在一起了,这解决了我的问题,不确定为什么我被踩了但还是谢谢。 - shrimpdrake
1
可能是因为它更适合于超级用户服务器故障?尽管如此,这并不足以让我投反对票;我投了赞成票。 - hoefling
2
Pip在我的CentOS7机器上的python36的EPEL版本中没有捆绑,只是提供一个FYI。我不得不使用setuptools包来获取它。 - xjsc16x
@xjsc16x 嗯,这个在IUS仓库中是可用的;这就是我为什么首先添加了这个答案的原因。 - hoefling
RPM仓库已经迁移到https://repo.ius.io/ius-release-el7.rpm。 - sc30

43
为在 CentOS 7 上安装 Python 3.6 的 pip,需执行以下命令:
``` $ python3.6 -m ensurepip ```

6
如果无法通过yum安装pip,则应该选择此解决方案,因为它是最新的解决方案。 - hoefling
2
请查看EPEL Python 3.6在CentOS 7上使用pip进行安装,以获取有关如何通过EPEL安装python3.6的更完整答案。 - phoenix
这是最好的答案。 - Roy
我刚刚用了这个技巧来显著简化一些 Ansible Playbooks (通过 shell 和 command 模块); Ansible 可以使用我指定的 python3 解释器,但找不到它的 pip。这使它工作,并减少了我需要的任务数。 - aidan
需要对pip3进行升级,以确保它能够正确运行: pip3 install --upgrade pip - Sajjad Hoviegar

26

按照以下步骤执行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)

17
自2019-08-22起,CentOS 7的基本仓库中现已提供python3-pip软件包。安装python3-pip将同时安装libtirpcpython3python3-libspython3-setuptools,无需使用第三方仓库或软件包。
yum install --assumeyes python3-pip

现在您可以验证版本(是的,它已经过时了,但它是来自基本仓库的版本):

$ pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
如果您不想偏离python3-pip包提供的文件,又不想看到有关pip过期的警告,请参阅https://dev59.com/tVYO5IYBdhLWcg3wI-Rw#46288945以消除这些信息。

谢谢!这是唯一对我有效的指令。 - Ali Khosro

5

由于某些原因,EPEL版本的Python 3.6没有捆绑Pip。我认为,相当多的人(包括我)会因此而找到这个页面。

$ 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)

4
如果您发现pip3与python2路径相关联,请尝试使用以下命令清除命令缓存:hash -r。这对我有用:

$ pip3 -V

pip 8.1.2 from /usr/lib/python2.7/site-packages/pip (python 2.7)

您可能会看到以下内容:

$ pip3 install --upgrade pip

TypeError:parse()收到一个意外的关键字参数'transport_encoding'

# 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}

2

当我试图在内置的CentOS 7 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

1
尝试一下:
sudo yum update
sudo yum install -y python36u python36u-libs python36u-devel python36u-pip

运行得很完美。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接