在 RHEL 上安装 Python 3

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

yum search python3

返回 No matches found for: python3

接下来是:

yum search python

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

309454 次浏览

手动安装 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
    

现在,如果需要另一个安装目录,可以将 --prefix传递给 configure命令。

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

make install步骤之后: 为了使用新的 Python 安装,您仍然需要将[ prefix ]/bin 添加到 $PATH,并将[ prefix ]/lib 添加到 $LD_LIBRARY_PATH(取决于您传递的 --prefix)

除了 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

您可以从以下网址下载 RHEL6/CentOS6的源 RPM 和二进制 RPM 给你

这是 Fedora 最新开发的后端 源 rpm 到 RHEL6/CentOS6

使用 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而不是系统默认值时,都必须运行最后一个命令。)

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

  • 你可以安装和 卸载(正确) python3。
  • 如果您在有多个 VM 的云环境中工作,那么在每个 VM 上编译 python3是不可接受的。

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

Red Hat 通过 EPEL仓库添加了:

  • CentOS 6的 Python 3.4
  • 针对 CentOS 7的 Python 3.6

如何在 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

您可以使用 pyvenv创建您的 虚拟世界:

pyvenv /tmp/foo

如何在 CentOS 7上安装 Python 3.6

与 CentOS7一起,pip3.6作为一个包提供:)

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

您可以使用 pyvenv创建您的 虚拟世界:

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

如何在 CentOS 6上安装 Python 3.6

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

您可以使用 pyvenv创建您的 虚拟世界:

python3.6 -m venv /tmp/foo

如何在 CentOS 7上安装 Python 3.6

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

您可以使用 pyvenv创建您的 虚拟世界:

python3.6 -m venv /tmp/foo

如果你想要正式的 RHEL 软件包,你可以使用 RHSCL (红帽子软件集)

更多细节:

您必须访问 Red Hat Customer Portal 才能阅读完整的文章。

Python 3最近作为 Python 34添加到 EPEL7。

目前正在努力制定关于如何在 EPEL7中打包 Python 3的打包指南。

参见 https://bugzilla.redhat.com/show_bug.cgi?id=1219411
并且 < a href = “ https://lists.fedoraproject.org/pipermail/python-devel/2015-July/000721.html”> https://lists.fedoraproject.org/pipermail/python-devel/2015-july/000721.html

除了 Python 2.7和3.3之外,Red Hat Software Collection 现在还包括 Python 3.4——都可以在 RHEL 6和7上运行。

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

还有很多 developerblog.redhat.com 的文章。

<opinion>使用 SCL百胜回购协议可能比其他百胜回购协议更好,因为 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-08-16:

  • 我相信 rhelcentos版本7现在默认在 python 3.6上
  • SCL yum repo 在撰写本文之日(2021-08-16)已经有了 python 3.8版本(尽管问题仍然引用了旧的 python 3.4版本)

如果你已经安装了 epel-release,那么 yum install python34.x86_64就可以工作,这个答案解释了如何安装,我确认它可以工作在 RHEL 7.3

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


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

下面是我安装 Python 3的步骤:

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

软件收藏使用 Python 3.5的三个步骤:

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

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

python --version
Python 3.5.1

如果您希望将 Python2作为当前 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 服务器中没有 shell 的“ Jenkins”。在这种情况下,手动将路径添加到脚本中的 $PATH将是一种方法。

最后,如果您使用 sudo pip3来安装软件包,但是它告诉您找不到 Pip3,那么可能在 /etc/sudoers中有一个 Security _ path 安全路径。通过 sudo visudo确认一下。在运行可以执行的命令时临时使用标准 路径,例如:

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

有关更多细节,请参见 这个问题。

注意 : Software Colltions 有一个更新的 Python 3.6,但是我现在不推荐它,因为我在安装 Pycurl 时遇到了很大的麻烦。对于 Python 3.5,这不是问题,因为我刚刚做了 sudo yum install sclo-python35-python-pycurl,它开箱即用。

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

Sudo yum install python34-devel

我在使用 python 2.7时遇到了同样的问题。 你也可以试试这个

  1. 请参阅升级前的版本是2.x

    python --version
    Python 2.7.5
    
  2. Use below command to upgrade your python to 3.x version-

    yum install python3x

    replace x with the version number you want.

    i.e. for installing python 3.6 execute

    yum install python36
    
  3. After that if you want to set this python for your default version then in bashrc file add

    vi ~/.bashrc

    alias python='python3.6'
    
  4. execute bash command to apply the settings

    bash
    
  5. Now you can see the version below

    python --version
    Python 3.6.3
    

我认为所有的答案要么是要求从代码中编译 python3,要么是安装二进制 RPM 包。下面是另一个启用 EPEL (用于企业 Linux 的附加软件包)然后使用 yum 安装 python 的解决方案。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

也请参阅 链接

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

同时,顶部投票的答案给出了糟糕的建议-在 RHEL 你不想改变 /usr/bin/python/usr/bin/python2,因为你可能会破坏 yum和其他 RHEL 管理工具。看看 /bin/yum,它是一个以 #!/usr/bin/python开头的 Python 脚本。如果从源代码编译 Python,则不要以 root 用户身份执行 make install。这将覆盖 /usr/bin/python。如果你破坏 yum它可能很难恢复您的系统。

有关详细信息,请参阅 Developers.redhat.com上的 如何在 RHEL 上安装 Python3、 pip、 venv、 viralenv 和 pipenv。它包括从 RHSCL 安装和使用 Python 3,使用 Python 虚拟环境,以及一些使用软件集合和在 RHEL 上使用 Python 的技巧。

简而言之,通过 Red Hat Software Collection 安装 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,可以在 ~/中添加以下内容。然后退出并再次登录。现在 Python3已经永久地出现在您的路径中了。

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

注意: 一旦您这样做了,输入 python就会得到 Python 3.6,而不是 Python 2.7。

请参阅上面的文章了解所有这些以及更多细节。

可以安装 miniconda (https://conda.io/miniconda.html)。这不仅仅是 python3.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

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

当 SCL 不可用时,全功能36(基于乔伊斯输入)

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

然后是蟒蛇3

对于那些工作在 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

从 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!