在RHEL上安装Python 3


128

我正在尝试使用以下步骤在RHEL上安装python3:

yum search python3

哪个回来了 No matches found for: python3

其次是:

yum search python

搜索结果均未包含python3。接下来我应该尝试什么?


我怀疑RHEL还不包括Python 3。您也许可以安装为Fedora构建的RPM:admin.fedoraproject.org/pkgdb/acls/name/python3
Thomas K

您也可以始终从源代码安装。
Dougal

仅在此处注意到对Python 3.4的EPEL审核请求:bugzilla.redhat.com/show_bug.cgi?id=1219411解决后,我(或其他人)将发布一个包含EPEL详细信息的新答案。
ncoghlan

2
塞缪尔·潘(Samuel Phan)使用社区yum回购的答案要比从源代码构建更好,这正是塞缪尔(Samuel)所说的原因。您应该将接受的答案更改为他的答案。
爱德华·内德·哈维

Answers:


186

手动安装很容易:

  1. 下载(Python.org上可能有较新的版本):

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
  2. 解压缩

    $ tar xf Python-3.* 
    $ cd Python-3.*
  3. 准备编译

    $ ./configure
  4. 建立

    $ make
  5. 安装

    $ make install

    或者,如果您不想覆盖python可执行文件(更安全,至少在某些发行版中yum需要python为2.x,例如RHEL6)-您可以python3.*使用并发实例安装到系统默认值altinstall

    $ make altinstall

现在,如果要使用备用安装目录,则可以传递--prefixconfigure命令。

示例:要在/ opt / local中“安装” Python,只需添加--prefix=/opt/local

在后make install步:为了使用新的Python安装,它可能是,你还是要在[前缀] / bin加入到$PATH和[前缀] / lib下的$LD_LIBRARY_PATH(根据的--prefix你通过)


9
您使用了:bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf-这也是一个更简单的方法:tar jxvf Python-3.2.2.tar.bz2
rajadhiraja

1
使用bz2 tar时,我从301(移到)进入了404。我将其更改为.tgz并下载正常。
卡雷布(Caleb)2015年

2
对我来说,生成的二进制文件名为python3.5,并且位于以下位置:[root @ machine python3.5]#其中python3.5 /usr/local/bin/python3.5因此您可能想要向该名称添加符号链接python3为方便起见
请问将于

6
如果你no acceptable C compiler found in $PATH when installing pythonreffer到http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
北师大

3
./configure --with-ensurepip=install启用pip3,否则pip3编译后将不会安装。
Searene

238

从RPM安装通常更好,因为:

  • 您可以安装和卸载(正确)python3。
  • 安装时间的方式更快。如果您在具有多个VM的云环境中工作,则不能在每个VM上编译python3。

解决方案1:Red Hat和EPEL存储库

红帽通过EPEL存储库添加了:

  • 适用于CentOS 6的Python 3.4
  • 适用于CentOS 7的Python 3.6

[EPEL]如何在CentOS 6上安装Python 3.4

sudo yum install -y epel-release
sudo yum install -y python34

# Install pip3
sudo yum install -y python34-setuptools  # install easy_install-3.4
sudo easy_install-3.4 pip

您可以使用以下命令创建您的virtualenvpyvenv

pyvenv /tmp/foo

[EPEL]如何在CentOS 7上安装Python 3.6

与CentOS7一起pip3.6提供:)

sudo yum install -y epel-release
sudo yum install -y python36 python36-pip

您可以使用以下命令创建您的virtualenvpyvenv

python3.6 -m venv /tmp/foo

如果使用pyvenv脚本,则会收到警告:

$ pyvenv-3.6 /tmp/foo
WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`

解决方案2:IUS社区存储库

IUS社区提供了一些 有关RHEL和CentOS的最新软件包。后面的人来自Rackspace,所以我认为他们值得信赖...

https://ius.io/

在此处为您检查正确的仓库:

https://ius.io/setup

[IUS]如何在CentOS 6上安装Python 3.6

sudo yum install -y https://repo.ius.io/ius-release-el6.rpm
sudo yum install -y python36u python36u-pip

您可以使用以下命令创建您的virtualenvpyvenv

python3.6 -m venv /tmp/foo

[IUS]如何在CentOS 7上安装Python 3.6

sudo yum install -y https://repo.ius.io/ius-release-el7.rpm
sudo yum install -y python36u python36u-pip

您可以使用以下命令创建您的virtualenvpyvenv

python3.6 -m venv /tmp/foo

1
修复了IUS发布包URL。他们已经更新了版本,仅此而已。如果他们再次更新软件包,则可以从网页上查看指向其RPM的链接。
塞缪尔·潘

1
就像我说的那样,答案中的链接包含不可打印的unicode字符。当我复制/粘贴您的链接时,这是我在VIM中看到的内容: https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/iu<200c><200b>s-release-1.0-14.iu‌​s.centos6.noarch.rpm 这是unicode字符:fileformat.info/info/unicode/char/200c/index.htm 我原来的答案中的URL有效,我已经测试过它。
塞缪尔·潘

1
有人告诉我IUS社区资料库不如Software Collections可靠,因此我会接受Mike Guerette在CentOS 6上的回答
bformet 2015年

2
使用此解决方案,您将如何为python34安装pip?
卢瓦克

1
很好的问题,我为此添加了一条评论。这是我发现的最好的。如果您要坚持基于RPM的安装,则应将IUS存储库用于CentOS7。它们提供了一个python34u-pip
塞缪尔·潘

31

除了gecco的答案外,我还将步骤3更改为:

./configure

至:

./configure --prefix=/opt/python3

然后,在安装后,您还可以:

# ln -s /opt/python3/bin/python3 /usr/bin/python3

这是为了确保安装不会与yum安装的python冲突。

请参阅我在Internet上找到的说明:

http://www.hosting.com/support/linux/installing-python-3-on-centosredhat-5x-from-source


16
为什么/opt/usr/local专门为此目的而存在,并且./configure没有明确地--prefix放置它。
cababunga

@cababunga正如我写的那样,我受特定站点教程的影响。然而,以上述方式安装python可能是有用的-卸载它会容易得多(似乎未提供make的卸载目标)。您也可以轻松地在/ opt下的指定单独目录中安装各种版本的python3,并手动设置要使用或测试的版本。
rsc

您可能还希望将PATH设置为包含binaries文件夹。对我来说是export PATH=$PATH:/opt/python3/bin
Caleb

10

与Python 2.7和3.3一起,Red Hat Software Collections现在包括Python 3.4-均可在RHEL 6和7上运行。

RHSCL 2.0文档位于https://access.redhat.com/documentation/zh-CN/Red_Hat_Software_Collections/

加上developerblog.redhat.com上的许多文章。

编辑

请按照以下说明在RHEL 6/7或CentOS 6/7上安装Python 3.4:

# 1. Install the Software Collections tools:
yum install scl-utils

# 2. Download a package with repository for your system.
#  (See the Yum Repositories on external link. For RHEL/CentOS 6:)
wget https://www.softwarecollections.org/en/scls/rhscl/rh-python34/epel-6-x86_64/download/rhscl-rh-python34-epel-6-x86_64.noarch.rpm
#  or for RHEL/CentOS 7
wget https://www.softwarecollections.org/en/scls/rhscl/rh-python34/epel-7-x86_64/download/rhscl-rh-python34-epel-7-x86_64.noarch.rpm

# 3. Install the repo package (on RHEL you will need to enable optional channel first):
yum install rhscl-rh-python34-*.noarch.rpm

# 4. Install the collection:
yum install rh-python34

# 5. Start using software collections:
scl enable rh-python34 bash

//,这是否不要求我们启用特殊的shell?与virtualenvs结合使用,我可以看到这成为了难题。
弥敦道(Nathan Basanese)2015年

//,这为什么需要scl enable rh-python34 bash?以后使用它有什么含义?
弥敦道(Nathan Basanese)2015年

有没有办法在RedHat 6上安装python3.5?我尝试过wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm,但没有找到。
Searene

您必须订阅才能获得收藏集吗?费用多少?
Noumenon

1
没有额外的费用。RH软件集合是所有RHEL开发人员订阅和大多数RHEL订阅的一部分。可以从developers.redhat.com/download获得免费的RHEL开发订阅。这些是真实的RHEL订阅-与生产权利完全相同-只是出于开发目的。
Mike Guerette

9

使用SCL存储库。

sudo sh -c 'wget -qO- http://people.redhat.com/bkabrda/scl_python33.repo >> /etc/yum.repos.d/scl.repo'
sudo yum install python33
scl enable python27

(每当您要使用python27而不是系统默认值时,都必须运行此最后一个命令。)


4
阅读了redhat docs之后,我需要做的是:scl enable python33 bash来启动一个新的外壳程序,该外壳程序将启用python 3或scl enable python33 'python hello.py'将在当前外壳程序中使用python 3运行您的python文件
点心

//,还有哪些更通用的说明也允许安装Python 3.4?
弥敦道(Nathan Basanese)2015年

如果您使用的是RHEL,请使用Red Hat Software集合:subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms。那你可以yum install rh-python36。有关更多信息,请参见如何在RHEL上安装Python 3
Rob T.


9

您可以从此处下载RHEL6 / CentOS6的源RPM和二进制RPM。

这是从最新的Fedora开发源rpm到RHEL6 / CentOS6的反向移植


那很棒。感谢您的努力,弗洛里安。也许createrepo在那些目录上运行会使它们对某些人更有用。
cababunga

终于解脱了。rpm完美安装。
lyomi 2014年

//,我们如何从该链接建立存储库?
弥敦道(Nathan Basanese)2015年

//,我可以确认这可行。等一下,我刚刚刮起了快速的东西是使用的URL为baseurl0bin.net/paste/...
弥敦道Basanese

6

我看到的所有答案都是要求从代码中编译python3或安装二进制RPM软件包。这是启用EPEL(企业Linux的额外软件包)然后使用yum安装python的另一个答案。RHEL 7.5(Maipo)的步骤

yum install wget y
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
rpm ivh epel-*.rpm
yum install python36

另请参阅链接


效果很好,特别是如果通过SCL的官方方式不起作用。然后补充pip3安装:sudo yum install python34-setuptools
OSP

5

我在使用python 2.7时遇到了同样的问题。请按照以下步骤成功升级到3.6。您也可以尝试以下一种

  1. 升级版本为2.x之前查看

    python --version
    Python 2.7.5
  2. 使用以下命令将python升级到3.x版本-

    百胜安装python3x

    用所需的版本号替换x

    即用于安装python 3.6执行

    yum install python36
  3. 之后,如果您想将此Python设置为默认版本,则在bashrc文件中添加

    vi〜/ .bashrc

    alias python='python3.6'
  4. 执行bash命令以应用设置

    bash 
  5. 现在您可以看到以下版本

    python --version
    Python 3.6.3

如果不添加EPEL或IUS的第3方回购协议之一,此答案将不起作用。RHEL中没有python36软件包。RHSCL软件包为rh-python36
Rob T.

4

通过Software Collections使用Python 3.5的三个步骤:

sudo yum install centos-release-scl
sudo yum install rh-python35
scl enable rh-python35 bash

请注意,最后一个命令不需要sudo。现在我们可以看到python 3是当前shell的默认值:

python --version
Python 3.5.1

如果您希望将Python 2作为当前shell的默认设置,则只需跳过最后一个命令。

现在,假设您的Python 3脚本给您一个类似的错误/usr/bin/env: python3: No such file or directory。这是因为安装通常是通过不寻常的路径完成的:

/opt/rh/rh-python35/root/bin/python3

以上通常是符号链接。如果要在启动时python3自动$PATH为所有用户添加到,则一种添加方法是添加以下文件:

sudo vim /etc/profile.d/rh-python35.sh

会有这样的东西:

#!/bin/bash

PATH=$PATH:/opt/rh/rh-python35/root/bin/

现在,重新启动后,如果我们这样做

python3 --version

它应该工作。一个例外是自动生成的用户,例如没有外壳的Jenkins服务器中的“ jenkins”。在这种情况下,手动添加路径到$PATH脚本将是一种方法。

最后,如果您正在使用sudo pip3安装软件包,但是它告诉您找不到pip3,则可能是您在/ etc / sudoers中有一个secure_path。检查应确认这一点。要在运行命令时临时使用标准PATH,可以执行以下操作:sudo visudo

sudo env "PATH=$PATH" pip3 --version

有关更多详细信息,请参见此问题。

注意:Software Collections有一个更新的Python 3.6,但是由于我在尝试安装Pycurl时遇到了很多麻烦,因此目前不推荐使用。对于Python 3.5来说,这不是问题,因为我刚sudo yum install sclo-python35-python-pycurl做完了就可以了。


No package centos-release-scl available.

它在CentOS资料库中可用。
Nagev

4

如果您使用的是RHEL,并且希望使用Red Hat支持的Python,请使用Red Hat软件集合(RHSCL)。Red Hat不支持EPEL和IUS软件包。上面的许多答案也指向CentOS软件集合。虽然可以安装它们,但它们不是Red Hat支持的RHEL软件包。

另外,票数最高的答案也提供了不好的建议-在RHEL上,您不想更改/usr/bin/python/usr/bin/python2因为您可能会破坏yum和使用其他RHEL管理工具。看一下/bin/yum,它是一个以开头的Python脚本#!/usr/bin/python。如果您从源代码编译Python,请不要make install以root用户身份进行操作。那将覆盖/usr/bin/python。如果中断yum,则很难恢复系统。

欲了解更多信息,请参阅如何安装Python 3,画中画,VENV,virtualenv中,并pipenv在RHELdevelopers.redhat.com。它涵盖了从RHSCL安装和使用Python 3,使用Python虚拟环境以及使用软件集合以及在RHEL上使用Python的许多技巧。

简而言之,要通过Red Hat Software Collections安装Python 3.6:

$ su -
# subscription-manager repos --enable rhel-7-server-optional-rpms \
   --enable rhel-server-rhscl-7-rpms
# yum -y install @development
# yum -y install rh-python36

# yum -y install rh-python36-numpy \
   rh-python36-scipy \ 
   rh-python36-python-tools \
   rh-python36-python-six

要使用软件集合,您必须启用它:

scl enable rh-python36 bash

但是,如果要永久启用Python 3,可以将以下内容添加到〜/ .bashrc中,然后注销并重新登录。现在,Python 3永久存在。

# Add RHSCL Python 3 to my login environment
source scl_source enable rh-python36

注意:执行此操作后,python现在输入即可提供Python 3.6而不是Python 2.7。

有关更多信息,请参见上面的文章。


3

如果您需要正式的RHEL软件包,可以使用RHSCL(红帽软件集合)

更多细节:

您必须有权访问Red Hat Customer Portal才能阅读全文。


//,刚刚投票。您愿意总结使用RHSCL做什么吗?毕竟,这是一个问答网站。
内森·巴桑尼斯

1
文章如何在RHEL安装Python 3具有通过软件的集合,并与RHSCLs,Python和虚拟环境中工作的许多技巧上的最新步骤的Python 3.6。
Rob T.

3

这是我按照以下步骤安装Python3的步骤:

yum install wget
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz  
sudo tar xvf Python-3.*   
cd Python-3.* 
sudo ./configure --prefix=/opt/python3    
sudo make   
sudo make install   
sudo ln -s /opt/python3/bin/python3 /usr/bin/python3

$ /usr/bin/python3    
Python 3.6.0

2
如果您从源代码构建而未安装大量-devel依赖项(SSL,bzip等),则会缺少许多依赖于共享库的模块。安装一个基于rpm的发行版(RHSCL,EPEL或IUS)是个更好的主意
Rob T.

1

yum install python34.x86_64如果您已epel-release安装,则可以正常工作,此答案说明了如何操作,并且我确认它可以正常工作RHEL 7.3

$ cat /etc/*-release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.3 (Maipo)

$ type python3
python3 is hashed (/usr/bin/python3)


1

当SCL不可用时,完全工作36(基于Joys输入)

yum install wget y
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
rpm ivh epel-*.rpm
yum install python36

sudo yum install python34-setuptools
sudo mkdir /usr/local/lib/python3.6
sudo mkdir /usr/local/lib/python3.6/site-packages

sudo easy_install-3.6 pip

最后激活环境...

pyvenv-3.6 py3
source py3/bin/activate

然后python3


0

您可以安装miniconda(https://conda.io/miniconda.html)。这不仅仅是python 3.7,但安装非常简单明了。

curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O
sudo yum install bzip2
bash Miniconda3-latest-Linux-x86_64.sh

您必须接受许可协议,并在交互模式下选择一些选项(接受默认值)。我相信它也可以以某种方式静默安装。


python之后找不到实际的命令,它是否包装了?
Mugen

0

对于使用AWS EC2 RHEL 7.5的用户,(使用sudo)启用必需的存储库

yum-config-manager --enable rhui-REGION-rhel-server-optional
yum-config-manager --enable rhui-REGION-rhel-server-rhscl

安装Python 3.6

yum install rh-python36

安装其他依赖项

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.