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

问题描述 投票:18回答:7

我很想知道在当前版本的centos7(7.5.1804)上为python3.6安装pip3(截至今日,可能是2018年)的推荐方法,并且接受的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安装python34-setuptools

sudo easy_install-3.4 pip

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

python python-3.x pip python-3.6 centos7
7个回答
23
投票
  1. 对于3.4+,点数相同 不,这不对。单个pip安装提供单个Python发行版(pip2.7 / pip3.4 / pip3.5等)。
  2. 从Python 3.5开始,pip已经与python发行版捆绑在一起了,所以你可以运行python3.6 -m pip而不是pip
  3. Python 3.6在CentOS 7 vanilla repo中不可用。当需要在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,从源代码构建是你唯一的选择。

Edit: when yum is not an option

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


18
投票

要在CentOS 7上安装ppi for python 3.6,你需要运行

$ python3.6 -m ensurepip


12
投票

请按照Centos 7中的这些命令操作

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

检查点数版本:

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

3
投票

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

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

3
投票

EPEL现在有一个python36-pip包。

首先,确保EPEL可用并在缺少时安装epel-release(此命令适用于新系统; ymmv取决于Yum存储库的特定配置):

if ! { yum makecache fast >/dev/null 2>&1 && yum --cacheonly repolist enabled | grep -qE '^epel\/' ; }; then
  yum install --assumeyes epel-release
fi

安装python36-pip还将安装python36python36-libspython36-setuptools

yum install --assumeyes python36-pip

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

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

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


2
投票

如果您发现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}

1
投票

试试这个::

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

为我工作完美。

© www.soinside.com 2019 - 2024. All rights reserved.