在RHEL上安装Python 3

Installing Python 3 on RHEL

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

1
yum search python3

返回No matches found for: python3

然后:

1
yum search python

所有搜索结果都不包含python3。下一步我应该尝试什么?


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

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

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

Red Hat已通过EPEL存储库添加:

  • 用于CentOS 6的python 3.4
  • 用于CentOS 7的python 3.6

[epel]如何在CentOS 6上安装python 3.4

1
2
3
4
5
6
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创建virtualenv:

1
pyvenv /tmp/foo

[epel]如何在CentOS 7上安装python 3.6

在Centos7中,pip3.6作为一个包提供:)

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

您可以使用pyvenv创建virtualenv:

1
python3.6 -m venv /tmp/foo

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

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

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

ius社区为rhel¢os提供了一些最新的包。后面的人来自Rackspace,所以我觉得他们很值得信赖…

HTTPS://IU.IO/

在这里为您检查正确的回购:

https://ius.io/gettingstarted网站/

[ius]如何在CentOS 6上安装python 3.6

1
2
sudo yum install -y https://centos6.iuscommunity.org/ius-release.rpm
sudo yum install -y python36u python36u-pip

您可以使用pyvenv创建virtualenv:

1
python3.6 -m venv /tmp/foo

[ius]如何在CentOS 7上安装python 3.6

1
2
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python36u python36u-pip

您可以使用pyvenv创建virtualenv:

1
python3.6 -m venv /tmp/foo


手动安装很容易:

  • 下载(python.org上可能有更新的版本):

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

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

    1
    $ ./configure
  • 建造

    1
    $ make
  • 安装

    1
    $ make install

    或者,如果您不想覆盖python可执行文件(至少在某些发行版上更安全,yum需要python为2.x,例如对于rhel6),您可以将python3.*安装为altinstall的系统默认值的并发实例:

    1
    $ make altinstall
  • 现在,如果您想要另一个安装目录,可以将--prefix传递给configure命令。

    示例:对于在/opt/local中"安装"python,只需添加--prefix=/opt/local

    在执行make install步骤之后:为了使用新的python安装,可能还需要将[prefix]/bin添加到$PATH中,将[prefix]/lib添加到$LD_LIBRARY_PATH中(取决于您传递的--prefix)。


    除了GECCO的回答之外,我还将第3步从:

    1
    ./configure

    到:

    1
    ./configure --prefix=/opt/python3

    安装后,您还可以:

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

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

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

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


    除了python 2.7和3.3,RedHat软件集合现在还包括python 3.4——所有的工作都在RHEL6和7上。

    rhscl 2.0文档位于https://access.red hat.com/documentation/en-us/red_hat_software_collections/

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

    编辑

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 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


    您可以从下载源rpms和二进制rpms for rhel6/centos6在这里

    这是最新Fedora开发的一个反向端口Rhel6/Centros6的源RPM


    使用SCL回购。

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


    最近将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


    我认为所有的答案要么是要求从代码中编译python3,要么是安装二进制RPM包。下面是启用EPEL(EnterpriseLinux的额外包)然后使用yum安装python的另一个答案。Rhel 7.5(maipo)的步骤

    1
    2
    3
    4
    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

    也见链接


    我在使用python 2.7时遇到了同样的问题。按照以下步骤成功升级到3.6。你也可以试试这个-

  • 升级版本为2.x之前请参阅

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

    yum安装python3x

    用所需的版本号替换X。

    例如,安装python 3.6时,请执行

    1
    yum install python36
  • 之后,如果您想为默认版本设置这个python,那么在bashrc文件中添加

    VI~/BASHC

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

    1
    bash
  • 现在您可以看到下面的版本

    1
    2
    python --version
    Python 3.6.3

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

    另外,最热门的答案给出了坏的建议——关于RHEL,你不想改变/usr/bin/python/usr/bin/python2,因为你可能会破坏yum和其他RHEL管理工具。看看/bin/yum,它是一个以#!/usr/bin/python开头的python脚本。如果从源代码编译python,则不要将make install作为根代码。这将覆盖/usr/bin/python。如果你破坏了yum,恢复你的系统可能会很困难。

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

    简而言之,要通过Red Hat软件集合安装python 3.6:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ 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

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

    1
    scl enable rh-python36 bash

    但是,如果希望永久启用python 3,可以将以下内容添加到~/.bashrc中,然后注销并重新登录。现在,python 3永远在您的路径中。

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

    注意:一旦您这样做了,现在输入python将提供python 3.6而不是python 2.7。

    有关所有这些内容和更多详细信息,请参阅上面的文章。


    通过软件集合使用python 3.5的三个步骤:

    1
    2
    3
    sudo yum install centos-release-scl
    sudo yum install rh-python35
    scl enable rh-python35 bash

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

    1
    2
    python --version
    Python 3.5.1

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

    现在假设您的python 3脚本提供了一个类似于/usr/bin/env: python3: No such file or directory的错误。这是因为安装通常是在一个不寻常的路径上进行的:

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

    上面通常是一个符号链接。如果您希望在启动时为所有用户自动将python3添加到$PATH中,一种方法是添加如下文件:

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

    它应该有如下内容:

    1
    2
    3
    #!/bin/bash

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

    现在在重启之后,如果我们这样做的话

    1
    python3 --version

    这应该是可行的。一个例外是自动生成的用户,比如Jenkins服务器中没有shell的"Jenkins"。在这种情况下,在脚本中手动添加到$PATH的路径是一种方法。

    最后,如果您使用sudo pip3安装软件包,但它告诉您找不到pip3,可能是您在/etc/sudoers中有一个安全的路径。与sudo visudo核对应确认。要在运行命令时临时使用标准路径,可以执行以下操作:

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

    有关详细信息,请参阅此问题。

    注意:软件集合中有一个更新的python 3.6,但是我现在不推荐它,因为我在安装pycurl时遇到了很多麻烦。对于python 3.5来说,这不是问题,因为我刚做了一个现成的sudo yum install sclo-python35-python-pycurl


    如果您想要正式的RHEL包,可以使用rhscl(Red Hat软件集合)

    更多细节:

    • rhscl 1.1中的python 3.3指南
    • 如何访问和下载Red Hat软件集合和/或Red Hat开发人员工具集和/或Red Hat开发人员工具集?

    您必须访问Red Hat客户门户才能阅读完整的文章。


    以下是我安装python3时遵循的步骤:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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

    最后激活环境…

    1
    2
    pyvenv-3.6 py3
    source py3/bin/activate

    然后Python 3


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

    sudo yum install python34-devel


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

    1
    2
    3
    4
    5
    6
    $ cat /etc/*-release
    NAME="Red Hat Enterprise Linux Server"
    VERSION="7.3 (Maipo)

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


    您可以安装miniconda(https://conda.io/miniconda.html)。这不仅仅是Python3.7,而且安装非常简单简单。

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

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