在RHEL上安装Python 3

Cha*_*ani 115 python rhel python-3.x

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

yum search python3
Run Code Online (Sandbox Code Playgroud)

哪个回来了 No matches found for: python3

其次是:

yum search python
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*han 226

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

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

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

Red Hat已经通过EPEL存储库为CentOS 6和7添加了Python 3.4.

不幸:

  • pyvenv没有捆绑在任何RPM中.您需要手动安装它(见下文).
  • pip3.6被窃听并且不起作用.你需要使用pyvenv.

[EPEL]如何在CentOS 6和7上安装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
Run Code Online (Sandbox Code Playgroud)

如果您想使用pyvenv,可以pyvenv在virtualenv中安装以下内容:

pyvenv /tmp/foo
Run Code Online (Sandbox Code Playgroud)

但是如果你想让它开箱即用,你可以在你的pyvenv:中添加这个bash函数(别名):

sudo yum install -y epel-release
sudo yum install -y python36 python36-pip
Run Code Online (Sandbox Code Playgroud)

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

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

https://ius.io/

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

https://ius.io/GettingStarted/

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

python3.6 -m venv /tmp/foo
Run Code Online (Sandbox Code Playgroud)

注意:pyvenv如果您不想使用,则可以开箱即用pip3.6.

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

$ pyvenv-3.6 /tmp/foo
WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`
Run Code Online (Sandbox Code Playgroud)

注意:pyvenv如果您不想使用,则可以开箱即用pyvenv.

  • 使用此解决方案,您将如何为python34安装pip? (2认同)

gec*_*cco 167

手动安装很容易:

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

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
    
    Run Code Online (Sandbox Code Playgroud)
  2. 拉开拉链

    $ tar xf Python-3.* 
    $ cd Python-3.*
    
    Run Code Online (Sandbox Code Playgroud)
  3. 准备编译

    $ ./configure
    
    Run Code Online (Sandbox Code Playgroud)
  4. 建立

    $ make
    
    Run Code Online (Sandbox Code Playgroud)
  5. 安装

    $ make install
    
    Run Code Online (Sandbox Code Playgroud)

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

    $ make altinstall
    
    Run Code Online (Sandbox Code Playgroud)

现在,如果您需要备用安装目录,则可以传递--prefix给该configure命令.

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

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

  • 您使用过:bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - 这也是一个更简单的可能性:tar jxvf Python-3.2.2.tar.bz2 (9认同)
  • 如果在安装python` reffer到[http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python]时,在$ PATH中找不到可接受的C编译器](http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python) (6认同)
  • 这在当今时代是荒谬的,因为 IBM/Redhat 拥有存储库和一大批工程师,我们必须从源代码进行编译和安装。为什么 IBM 和 Redhat 讨厌 Python?这是废话。 (3认同)
  • 对我来说,生成的二进制文件名为python3.5,并且位于此处:[root @ machine python3.5]#其中python3.5 ** / usr / local / bin / python3.5 **所以您可能想要添加一个为了方便起见,与此符号名为python3的符号链接 (2认同)
  • `./configure --with-ensurepip = install`启用`pip3`,否则编译后你不会安装`pip3`. (2认同)

rsc*_*rsc 31

除了gecco的回答,我还会改变第3步:

./configure
Run Code Online (Sandbox Code Playgroud)

至:

./configure --prefix=/opt/python3
Run Code Online (Sandbox Code Playgroud)

然后安装后你还可以:

# ln -s /opt/python3/bin/python3 /usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 为什么`/ opt`?`/ usr/local`专门用于此目的,而``/ configure`没有明确的`--prefix`将放置它. (15认同)

小智 9

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

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


Pau*_*per 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
Run Code Online (Sandbox Code Playgroud)

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

  • 在阅读了redhat文档后,我需要做的是; `scl enable python33 bash`启动一个新的shell,它将启用python 3或`scl enable python33'python hello.py'`,它将在当前shell中使用python 3运行你的python文件 (4认同)

小智 9

与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上.

编辑

按照以下说明在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
Run Code Online (Sandbox Code Playgroud)


rku*_*ska 8

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


Jay*_*put 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
Run Code Online (Sandbox Code Playgroud)

另请参阅链接


小智 6

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

此外,投票最高的答案给出了不好的建议 - 在 RHEL 上,您不想更改/usr/bin/python/usr/bin/python2因为您可能会破坏yum和其他 RHEL 管理工具。看一看/bin/yum,它是一个以#!/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
Run Code Online (Sandbox Code Playgroud)

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

scl enable rh-python36 bash
Run Code Online (Sandbox Code Playgroud)

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

# Add RHSCL Python 3 to my login environment
source scl_source enable rh-python36
Run Code Online (Sandbox Code Playgroud)

注意:一旦你这样做了,python现在输入会给你 Python 3.6 而不是 Python 2.7。

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


IRS*_*HAD 5

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

  1. 在升级版本之前看到的是2.x.

    python --version
    Python 2.7.5
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用以下命令将python升级到3.x版本 -

    yum install python3x

    x替换为您想要的版本号.

    即用于安装python 3.6执行

    yum install python36
    
    Run Code Online (Sandbox Code Playgroud)
  3. 之后,如果你想将这个python设置为你的默认版本,那么在bashrc文件中添加

    vi~/.bashrc

    alias python='python3.6'
    
    Run Code Online (Sandbox Code Playgroud)
  4. 执行bash命令以应用设置

    bash 
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在您可以看到下面的版本

    python --version
    Python 3.6.3
    
    Run Code Online (Sandbox Code Playgroud)