2015-09-16 126 views
58

CentOS的7 EPEL现在包括Python的3.4:yum install python34如何在CentOS 7中安装pip?

然而,当我尝试,尽管Python的3.4安装成功,它不会出现安装点子。这很奇怪,因为pip应该默认包含在Python 3.4中。 which pip3找不到任何东西,也没有which pip

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

+2

可能相关:http://stackoverflow.com/questions/26576086/no-pip-binary-after-installing-python-3-4-2-on-centos-6-5 – cel

+0

我看了看那里,但不幸的是没有任何关系。 –

+0

所以没有'pip34'二进制文件?那么,如果安装了,你将总能通过'python -m pip'调用pip。如果没有安装'python -m ensurepip'可以用来引导它。您可能需要提升权限才能调用后者的命令。 – cel

回答

61

我发现安装pip3最简单的方法(对于python3。x软件包):

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

当然,您需要事先启用EPEL存储库。

您现在应该可以像下面的安装包python3.x运行命令:

$ pip3 install foo 
+0

这应该是被接受的答案。 – maxschlepzig

+0

我认为这是最好的解决方案,同时保持一切健全。我不建议编辑__init__.py – laapsaap

+0

同意的最佳解决方案使此默认答案 –

36
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

+0

听起来像你没有zlib-devel或zlib,具体取决于。你可以尝试与你的软件包管理器一起安装吗? sudo yum安装zlib或sudo apt-get install zlib。我希望有所帮助。 – DevOops

+0

我也面临与@SoldierCorp相同的问题,但是当我尝试安装'zlib'时,它说'Package zlib-1.2.3-29.el6.x86_64已经安装并且最新版本'任何想法发生了什么? –

15

CentOS的7 yum包为python34不包括ensurepip模块,但由于某些原因缺少应该成为该模块一部分的setuptools和pip文件。要修复,下载一封来自PyPI最新的车轮到模块的_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/和这里用于点 https://pypi.python.org/simple/pip/ – yoshiwaan

+0

不幸的是,编辑ensurepip __init__.py文件导致RPM验证失败,并且还会覆盖程序包更新。 – carlwgeorge

+1

我很想知道他们的理由是什么导致这个混乱。我告诉自己必须有一个很好的理由...... – xenithorb

-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 ”......谁是打包者? –

6

而不是使用broken EPEL python34 packages,您可以启用IUS repo并让它正常工作。

  • PIP虚拟环境内

主要python34upython35u IUS封装包括pyvenv工具(/usr/bin/pyvenv-3.4/usr/bin/pyvenv-3.5),其包括PIP的捆绑车轮和setuptools的提供引导虚拟环境。

  • 全球PIP

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

+1

不知道为什么有人会低估这个答案。感谢您将IUS引入我们的视线。 – Dave

+0

关于downvote,这将有助于解释关于EPEL安装的“破坏”评论。我今天也从相关的搜索中发现了IUS,任何提到的答案都值得赞赏。 –

+1

@MarkEdington我编辑了答案,添加一个链接到https://bugzilla.redhat.com/show_bug.cgi?id=1263057。 – carlwgeorge

5
yum install python34-pip 

pip3.4 install foo 

您可能需要安装EPEL库:

yum install -y epel-release

+0

这个yum软件包来自哪个仓库? –

+1

CentOS 7. *:'yum install -y epel-release' –

+0

这样的声音最近被添加到EPEL中,并且可能应该成为正确的答案。一旦其他人确认这对他们有用,那么我会将其作为公认的答案。 –

0

只需使用easy_install(一个Setuptools来打包python librarie)就可以轻松完成此操作。

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

  • 安装pip的步骤。

    1. 因此,让你安装的easy_install,

      sudo yum install python-setuptools python-setuptools-devel

    2. 现在,让我们做的easy_install点子,

      sudo easy_install pip

这是伟大的。现在你有点子:)