142

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

yum search python3

哪个返回 No matches found for: python3

其次是:

yum search python

没有一个搜索结果包含 python3。接下来我应该尝试什么?

4

19 回答 19

251

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

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

解决方案 1:红帽和 EPEL 存储库

Red Hat 通过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

在 CentOS7pip3.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
于 2014-04-26T23:30:28.380 回答
200

手动安装python很容易(即从源代码构建):

  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 安装,您可能仍然需要将 [prefix]/bin 添加到$PATH[prefix]/lib 到$LD_LIBRARY_PATH(取决于--prefix您通过的)

于 2011-11-13T13:53:48.030 回答
34

除了 gecco 的回答之外,我还将第 3 步更改为:

./configure

到:

./configure --prefix=/opt/python3

然后在安装后你还可以:

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

是为了保证安装不会和用yum安装的python冲突。

请参阅我在互联网上找到的解释:

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

于 2012-07-29T11:15:45.500 回答
11

除了 Python 2.7 和 3.3,Red Hat Software Collections 现在还包括 Python 3.4——所有这些都适用于 RHEL 6 和 7。

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

加上 developerblog.redhat.com 上的大量文章。

<opinion>使用SCLyum 存储库可能比其他 yum 存储库更好,因为 RPM 是由 Redhat 开发/测试的(即第一方 RPM,而不是第三方)。</opinion>

编辑

按照以下说明在 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

2021 年 8 月 16 日更新:

  • rhel我相信默认情况下,centos版本 7 现在在 python 3.6 上
  • 截至撰写本文之日 2021 年 8 月 16 日,SCL yum 存储库的 python 版本为 3.8(尽管问题仍然引用较旧的 python 3.4 版本)
于 2015-08-27T13:33:37.740 回答
9

您可以从这里下载 RHEL6 / CentOS6 的源 RPM 和二进制 RPM

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

于 2013-02-03T08:53:29.473 回答
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 而不是系统默认值时,都必须运行最后一个命令。)

于 2014-01-30T07:52:42.767 回答
9

Python3 最近作为 Python34 添加到 EPEL7。

正在(当前)努力制定关于如何在 EPEL7 中为 Python3 打包内容的打包指南。

请参阅https://bugzilla.redhat.com/show_bug.cgi?id=1219411
https://lists.fedoraproject.org/pipermail/python-devel/2015-July/000721.html

于 2015-07-16T07:58:23.937 回答
7

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

yum install wget –y
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-XX.noarch.rpm # Verify actual RPM name by browsing dir over browser
rpm –ivh epel-*.rpm
yum install python36

另见链接

于 2018-07-09T14:25:31.710 回答
7

如果您使用 RHEL 并且想要 Red Hat 支持的 Python,请使用 Red Hat Software collections (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它可能很难恢复你的系统。

有关详细信息,请参阅developer.redhat.com上的如何在 RHEL上安装 Python 3、pip、venv、virtualenv 和 pipenv。它涵盖了从 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。

有关所有这些以及更多详细信息,请参见上面的文章。

于 2018-08-13T16:42:39.837 回答
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
    
于 2018-04-05T07:10:44.240 回答
4

以下是我安装 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
于 2017-02-11T20:47:20.950 回答
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中有一个安全路径。检查应该确认。要在运行命令时临时使用标准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了开箱即用的工作。

于 2017-03-06T18:21:34.367 回答
3

如果您想要官方 RHEL 软件包,您可以使用 RHSCL(Red Hat Software Collections)

更多细节:

您必须有权访问红帽客户门户才能阅读全文。

于 2015-04-02T14:12:49.490 回答
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)
于 2017-02-08T17:12:08.910 回答
1

对于 Amazon Linux 上的 RHEL,我必须使用 python3:

sudo yum install python34-devel

于 2017-05-10T18:02:33.273 回答
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

于 2019-01-08T09:34:10.090 回答
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

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

于 2018-12-30T12:32:35.347 回答
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
于 2019-07-01T17:08:33.007 回答
0

从 RHEL 8 开始,您可以直接从官方存储库安装 python3:

$ podman run --rm -ti ubi8 bash
[root@453fc5c55104 /]# yum install python3                                                                                                                                                    
Updating Subscription Management repositories.                                                                                                                                                
Unable to read consumer identity                                                                                                                                                              
Subscription Manager is operating in container mode.                                                                                                                                          
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.  

...

Installed:
  platform-python-pip-9.0.3-16.el8.noarch
  python3-pip-9.0.3-16.el8.noarch
  python3-setuptools-39.2.0-5.el8.noarch
  python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64      

Complete!

你甚至可以获得 python 3.8:

[root@453fc5c55104 /]# yum install python38
Installed:
  python38-3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
  python38-libs-3.8.0-6.module+el8.2.0+5978+503155c0.x86_64                                       
  python38-pip-19.2.3-5.module+el8.2.0+5979+f9f0b1d2.noarch                                  
  python38-pip-wheel-19.2.3-5.module+el8.2.0+5979+f9f0b1d2.noarch                                 
  python38-setuptools-41.6.0-4.module+el8.2.0+5978+503155c0.noarch                           
  python38-setuptools-wheel-41.6.0-4.module+el8.2.0+5978+503155c0.noarch                          

Complete!
于 2020-08-18T08:33:03.103 回答