如何在CentOS 7上安装pip?

112

CentOS 7 EPEL现在已经包含了Python 3.4:yum install python34

然而,当我尝试这样做时,虽然Python 3.4成功安装,但似乎没有安装pip。这很奇怪,因为pip应该是Python 3.4的默认组件。which pip3which pip都没有找到任何东西。

如何从CentOS 7 EPEL版本中的Python 3.4包访问pip?


3
可能相关链接:http://stackoverflow.com/questions/26576086/no-pip-binary-after-installing-python-3-4-2-on-centos-6-5 - cel
1
我查看了那里,但不幸的是没有任何相关的内容。 - Jeff Widman
那么没有 pip34 二进制文件?如果已安装,您始终可以通过 python -m pip 调用 pip。如果未安装,则可以使用 python -m ensurepip 引导它。您可能需要提升权限来调用后者的命令。 - cel
1
/usr/bin/中没有找到任何pip*二进制文件。我相当确定我正在寻找正确的位置,因为那里安装了python3.4pyvenv-3.4,它们没有链接到其他地方。啊好吧,看起来它根本没有包含在python3.4包中,这有点烦人。ensurepip模块也不存在于python3.4中,所以我可能会使用iUS存储库,直到EPEL发布python3-pip或等效版本。 - Jeff Widman
奇怪,如果我没记错的话,每个 python3.4 安装都应该有 ensurepip 模块。在这种情况下,还有一个 get-pip.py 脚本,可以为您引导 pip。 - cel
1
显然,python3 EPEL effort 仍处于早期阶段。另请参见pyvenv3.4没有pip无法工作python34的ensurepip已损坏 - maxschlepzig
10个回答

158

我发现在CentOS 7上安装pip3(用于python3.x包)最简单的方法是:

$ sudo yum install python34-setuptools
$ sudo easy_install-3.4 pip

当然,首先你需要启用EPEL存储库。

现在,你应该能够运行如下命令来安装Python3.x的软件包:

$ pip3 install foo

我认为这也是最好的解决方案,同时保持一切正常。我不建议编辑__init__.py文件。 - laapsaap
同意最佳解决方案,将其设为默认答案。 - johhny B
7
在我的RHEL-7系统上,已经设置了EPEL,我刚刚成功地运行了yum install python34-pip - some bits flipped
2
值得注意的是,easy_install-3.4 pip 覆盖了系统的 pip。之后我进行了 yum reinstall python-pip 以确保没有问题。这意味着您必须显式地调用 pip3 来使用它,正如预期的那样。 - miken32

52
curl https://bootstrap.pypa.io/get-pip.py | python3.4

如果出于某些原因您没有 curl

wget https://bootstrap.pypa.io/get-pip.py
python3.4 get-pip.py

完成此步骤后,您应该能够运行

$ pip3

1
我遇到了这个错误:zipimport.ZipImportError: 无法解压数据;zlib不可用...你知道为什么会出现这种情况吗? - SoldierCorp
听起来你可能没有安装zlib-devel或zlib,具体要看情况。你可以尝试使用包管理器来安装它吗?sudo yum install zlib 或者 sudo apt-get install zlib。希望能帮到你。 - DevOops
我也遇到了和@SoldierCorp一样的问题,但是当我尝试安装zlib时,它显示Package zlib-1.2.3-29.el6.x86_64 already installed and latest version。有什么想法吗? - Mostafiz Rahman
如果您正在安装在OS X 10.11上,可以尝试重新运行Xcode设置:xcode-select --install - DevOops
我正在使用CentOS 6.7。 - Mostafiz Rahman
显示剩余3条评论

16

CentOS 7的python34 yum包中包含了ensurepip模块,但由于某种原因缺少了该模块应该有的setuptools和pip文件。为了解决这个问题,需要从PyPI下载最新的wheels并将其放入该模块的_bundled目录(/lib64/python3.4/ensurepip/_bundled/)中:

setuptools-18.4-py2.py3-none-any.whl
pip-7.1.2-py2.py3-none-any.whl

然后编辑__init__.py以匹配下载的版本:

_SETUPTOOLS_VERSION = "18.4"
_PIP_VERSION = "7.1.2"

在此之后,python3.4 -m ensurepip 就可以正常工作了。例如,每次创建虚拟环境时都会自动调用 ensurepip:

pyvenv-3.4 py3
source py3/bin/activate

希望RH能修复损坏的Python3.4 yum包,以免需要手动打补丁。


2
非常感谢。对于那些需要的人,这些轮子在setuptools的这里可用 https://pypi.python.org/simple/setuptools/,pip的这里也可用 https://pypi.python.org/simple/pip/。 - yoshiwaan
很不幸,编辑ensurepip的__init__.py文件会导致RPM验证失败,并且在软件包更新时也会被覆盖。 - carlwgeorge
2
我真的非常想知道他们引起这个混乱的理由是什么。我告诉自己一定有一个好的理由... - xenithorb
@xenithorb,这样做的理由可能是要单独打包pip - 因为Fedora也有python3-pip。EPEL项目上的python3显然仍在进行中。 - maxschlepzig
EPEL (企业级Linux的额外软件包) python36 现在可以通过 python3.6 -m ensurepip 运行。 - Kevin

9

更新:下面提到的python34错误已经被修复,现在它是一个完美的选择。

与其使用损坏的EPEL python34软件包,您可以启用IUS仓库并使其正常工作。

  • 虚拟环境内的pip

主要的python34upython35u IUS软件包包括pyvenv工具(/usr/bin/pyvenv-3.4/usr/bin/pyvenv-3.5),其中包含用于引导虚拟环境的pip和setuptools的打包wheel。

  • 全局pip

python34u-pippython35u-pip IUS软件包分别包括/usr/bin/pip3.4/usr/bin/pip3.5。这些都可以很好地将软件包安装到系统site-packages目录中。


1
不确定为什么会有人对这个答案点踩。感谢您让我们注意到IUS。 - Dave
关于投票否决,如果能解释一下“破损”的EPEL安装评论将会很有帮助。我今天通过相关搜索也发现了IUS,并且任何在这里回答中提到它的言论都值得点赞。 - Mark Edington
1
@MarkEdington 我编辑了答案并添加了一个链接到https://bugzilla.redhat.com/show_bug.cgi?id=1263057。 - carlwgeorge
1
此问题已在 python34-3.4.5-4 版本中修复。 - DrStrangepork

8
yum install python34-pip

pip3.4 install foo

您可能需要安装EPEL存储库: yum install -y epel-release

这个yum包是来自哪个仓库的? - Jeff Widman
1
CentOS 7.*:yum install -y epel-release - Shen Yu
1
听起来这是最近添加到EPEL的,很可能会成为正确的答案。一旦其他人确认这也适用于他们,那么我将把这个作为被接受的答案。 - Jeff Widman
对我来说运行得非常好。:) - Bill Cheng
这个答案在运行VPS服务器时非常有帮助。 - jking

3

更新 2019

起初我尝试使用 easy_install,但它并没有以清晰、直观的方式安装包。而且当需要移除包时,它会留下许多需要清理的痕迹。

sudo yum install epel-release
sudo yum install python34-pip
pip install package

这是我使用的解决方案,它将 "pip3" 安装为系统上的 pip。它还使用标准 rpm 结构,因此在卸载时很干净。如果您想在系统上同时拥有 python2 和 python3 包管理器,我不确定需要采取哪些步骤。


1
这是在运行VPS服务器时的正确方法,通常与cPanel一起使用。 - jking

1

以下是我安装Python34和pip的步骤:

yum update -y
yum -y install yum-utils
yum -y groupinstall development
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum makecache
yum -y install python34u  python34u-pip
python3.6 -v
echo "alias python=/usr/bin/python3.4" >> ~/.bash_profile
source ~/.bash_profile
pip3 install --upgrade pip

# if yum install python34u-pip doesnt work, try 

curl https://bootstrap.pypa.io/get-pip.py | python

使用curl安装pip3,我执行了curl https://bootstrap.pypa.io/get-pip.py | python3 - mRyan

0

有一个简单的方法可以通过使用easy_install(一种打包Python库的Setuptools)来完成。

  • 假设。 在执行此操作之前,请检查您的Centos机器上是否安装了Python(至少2.x)。

  • 安装pip的步骤。

    1. 现在让我们安装easy_install,

      sudo yum install python-setuptools python-setuptools-devel

    2. 现在让我们使用easy_install安装pip,

      sudo easy_install pip

太棒了。现在你有了pip :)


0

查看您安装的Python3版本:

yum search pip

然后安装最佳匹配项。使用reqoquery查找结果pip3的名称。

repoquery -l python36u-pip

告诉我要使用pip3.6而不是pip3


-4

在CentOS 7上,pip版本为pip3.4,并位于此处:

/usr/local/bin/pip3.4

2
“/usr/local/bin” 目录下的文件不太可能被 RHEL/CentOS 打包。您能否成功执行 “rpm -qf /usr/local/bin/pip3.4” 命令?如果可以,对输出结果执行 “rpm -qi <packagename>”,以查看打包者是谁? - Jeff W

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