Instalar Python 3 en RHEL

128

Estoy tratando de instalar python3 en RHEL usando los siguientes pasos:

yum search python3

Que regresó No matches found for: python3

Seguido por:

yum search python

Ninguno de los resultados de búsqueda contenía python3. ¿Qué debo probar a continuación?

Chander Shivdasani
fuente
Sospecho que RHEL aún no incluye Python 3. Es posible que pueda instalar un RPM creado para Fedora: admin.fedoraproject.org/pkgdb/acls/name/python3
Thomas K
También siempre puedes instalar desde la fuente.
Dougal
Simplemente observando la solicitud de revisión de EPEL para Python 3.4 aquí: bugzilla.redhat.com/show_bug.cgi?id=1219411 Una vez que se resuelva, yo (u otra persona) publicaremos una nueva respuesta con los detalles de EPEL.
ncoghlan 01 de
2
La respuesta de Samuel Phan usando repositorios comunitarios yum es mejor que construir desde la fuente, exactamente por las razones que Samuel declaró. Debe cambiar la respuesta aceptada a la suya.
Edward Ned Harvey

Respuestas:

186

Es fácil instalarlo manualmente:

  1. Descargar (puede haber versiones más recientes en Python.org ):

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
  2. Abrir la cremallera

    $ tar xf Python-3.* 
    $ cd Python-3.*
  3. Preparar compilación

    $ ./configure
  4. Construir

    $ make
  5. Instalar en pc

    $ make install

    O bien, si no desea sobrescribir el pythonejecutable (más seguro, al menos en algunas distribuciones yumdebe pythonser 2.x, como para RHEL6), puede instalar python3.*como una instancia concurrente al valor predeterminado del sistema con altinstall:

    $ make altinstall

Ahora, si desea un directorio de instalación alternativo, puede pasar --prefixal configurecomando.

Ejemplo: para 'instalar' Python en / opt / local, simplemente agregue --prefix=/opt/local.

Después del make installpaso: para poder usar su nueva instalación de Python, podría ser que todavía tenga que agregar el [prefijo] / bin al $PATHy [prefijo] / lib al $LD_LIBRARY_PATH(dependiendo del --prefixpaso)

gecco
fuente
9
Usaste: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - Esta también es una posibilidad más simple: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja
1
Obtuve un 301 (movido) a un 404 cuando uso el bz2 tar. Lo cambié a .tgz y se descargó bien.
Caleb
2
Y para mí, el binario resultante se llamó python3.5 y vive aquí: [root @ machine python3.5] # which python3.5 /usr/local/bin/python3.5 Por lo tanto, es posible que desee agregar un enlace simbólico a este nombre python3 por conveniencia
Será
66
si te no acceptable C compiler found in $PATH when installing pythonrefieres a http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
bnu
3
./configure --with-ensurepip=installpara habilitar pip3, o no habrá pip3instalado después de la compilación.
Searene
238

La instalación desde RPM es generalmente mejor porque:

  • puedes instalar y desinstalar (correctamente) python3.
  • El tiempo de instalación es mucho más rápido . Si trabaja en un entorno de nube con varias máquinas virtuales, no es aceptable compilar python3 en cada máquina virtual.

Solución 1: repositorios de Red Hat y EPEL

Red Hat ha agregado a través del repositorio EPEL :

  • Python 3.4 para CentOS 6
  • Python 3.6 para CentOS 7

[EPEL] Cómo instalar Python 3.4 en CentOS 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

Puede crear su virtualenv usando pyvenv:

pyvenv /tmp/foo

[EPEL] Cómo instalar Python 3.6 en CentOS 7

Con CentOS7, pip3.6se proporciona como un paquete :)

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

Puede crear su virtualenv usando pyvenv:

python3.6 -m venv /tmp/foo

Si usa el pyvenvscript, recibirá una ADVERTENCIA:

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

Solución 2: repositorios de la comunidad IUS

La comunidad IUS proporciona algunos paquetes actualizados para RHEL y CentOS . Los chicos detrás son de Rackspace, así que creo que son bastante confiables ...

https://ius.io/

Consulte el repositorio adecuado para usted aquí:

https://ius.io/setup

[IUS] Cómo instalar Python 3.6 en CentOS 6

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

Puede crear su virtualenv usando pyvenv:

python3.6 -m venv /tmp/foo

[IUS] Cómo instalar Python 3.6 en CentOS 7

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

Puede crear su virtualenv usando pyvenv:

python3.6 -m venv /tmp/foo
Samuel Phan
fuente
1
Se corrigió la URL del paquete de lanzamiento de IUS. Han actualizado la versión, eso es todo. Si vuelven a actualizar el paquete, puede consultar el enlace a sus RPM desde la página web.
Samuel Phan
1
Como dije, el enlace en su respuesta contiene caracteres unicode no imprimibles. Cuando copio / pego su enlace, esto es lo que veo en 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 Aquí está el carácter unicode: fileformat.info/info/unicode/char/200c/index.htm La URL en mi respuesta original funciona, acabo de probar eso.
Samuel Phan
1
Me han dicho que el repositorio de la comunidad IUS no es tan confiable como Software Collections, por lo que iría con la respuesta de Mike Guerette en CentOS 6
bformet
2
Con esta solución, ¿cómo instalaría pip para python34?
Loïc
1
Muy buena pregunta, agregué un comentario para eso. Es lo mejor que encontré. Si desea apegarse a la instalación basada en RPM, debe usar repositorios IUS para CentOS 7. Proporcionan a python34u-pip.
Samuel Phan
31

Además de la respuesta de gecco, cambiaría el paso 3 de:

./configure

a:

./configure --prefix=/opt/python3

Luego, después de la instalación, también podría:

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

Es para garantizar que la instalación no entre en conflicto con python instalado con yum.

Ver explicación que he encontrado en Internet:

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

rsc
fuente
16
¿Por qué /opt? /usr/localespecíficamente existe para este propósito y ahí es donde ./configuresin explícito --prefixlo colocará.
cababunga
@cababunga Como escribí, me ha influido la lectura del tutorial del sitio especificado. Sin embargo, instalar Python de la manera anterior puede ser útil: sería mucho más fácil desinstalarlo (parece que no se proporciona el objetivo de desinstalación para make). También podría instalar fácilmente varias versiones de python3 en directorios separados especificados en / opt y establecer manualmente cuál usar o probar.
rsc
También es posible que desee configurar su RUTA para que contenga la carpeta binarios. Para mí fueexport PATH=$PATH:/opt/python3/bin
Caleb
10

Junto con Python 2.7 y 3.3, Red Hat Software Collections ahora incluye Python 3.4, todo funciona tanto en RHEL 6 como en 7.

Los documentos de RHSCL 2.0 están en https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/

Además de muchos artículos en developerblog.redhat.com.

editar

Siga estas instrucciones para instalar Python 3.4 en RHEL 6/7 o CentOS 6/7:

# 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
Mike Guerette
fuente
//, ¿No requiere esto que habilitemos un shell especial? Combinado con virtualenvs, puedo ver que se convierte en un dolor en el culo.
Nathan Basanese
//, ¿Por qué esto requiere scl enable rh-python34 bash? ¿Cuáles son las implicaciones para usar esto más adelante?
Nathan Basanese
¿Hay alguna manera de instalar python3.5 en RedHat 6? Lo intenté wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm, pero no fue encontrado.
Searene
¿Tienes que suscribirte para obtener las colecciones? ¿Cuánto cuesta eso?
Noumenon
1
No hay costo extra. Las colecciones de software de RH son parte de todas las suscripciones de desarrolladores de RHEL y la mayoría de las suscripciones de RHEL. Se pueden obtener suscripciones de desarrollo RHEL sin costo en developers.redhat.com/download. Estas son suscripciones RHEL reales, todas las mismas partes que los derechos de producción, pero son para fines de desarrollo.
Mike Guerette
9

Use los repositorios 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

(Este último comando tendrá que ejecutarse cada vez que desee utilizar python27 en lugar del valor predeterminado del sistema).

Paul Draper
fuente
44
Después de leer los documentos de redhat, lo que necesitaba hacer era: scl enable python33 bashpara poner en marcha un nuevo shell que será habilitado para Python 3 o scl enable python33 'python hello.py'que se desarrollará el archivo de Python usando Python 3 en el shell actual
bocados
//, ¿Qué instrucciones más genéricas también permitirían la instalación de Python 3.4?
Nathan Basanese
Si usted está en RHEL, utilizar colecciones de Red Hat Software: subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms. Entonces puedes yum install rh-python36. Consulte Cómo instalar Python 3 en RHEL para obtener más información.
Rob T.
9

Puede descargar un RPM de origen y RPM binarios para RHEL6 / CentOS6 desde aquí

Este es un backport de la nueva fuente de desarrollo de Fedora rpm a RHEL6 / CentOS6

Florian La Roche
fuente
Eso es genial. Gracias por tu esfuerzo, Florian. Quizás correr createrepoen esos directorios los haría aún más útiles para algunas personas.
cababunga
Qué alivio. Las rpm instaladas perfectamente.
lyomi
//, ¿Cómo hacemos un repositorio desde ese enlace?
Nathan Basanese
//, puedo confirmar que esto funciona. Espera, acabo de preparar algo rápido que usó esa URL como baseurl: 0bin.net/paste/…
Nathan Basanese
6

Veo todas las respuestas ya sea pidiendo compilar python3 desde el código o instalando el paquete binario RPM. Aquí hay otra respuesta para habilitar EPEL (Paquetes adicionales para Enterprise Linux) y luego instalar python usando yum. Pasos para 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

Ver también enlace

Jay Rajput
fuente
Funciona bien, especialmente si la forma oficial a través de SCL no funciona. Complemente la instalación de pip3 entonces:sudo yum install python34-setuptools
OSP
5

Estaba teniendo el mismo problema al usar Python 2.7. Siga los pasos a continuación para actualizar con éxito a 3.6. También puedes probar este:

  1. Ver antes de actualizar la versión es 2.x

    python --version
    Python 2.7.5
  2. Utilice el siguiente comando para actualizar su python a la versión 3.x

    yum instalar python3x

    reemplazar x con el número de versión que desee.

    es decir, para instalar Python 3.6 ejecutar

    yum install python36
  3. Después de eso, si desea configurar este python para su versión predeterminada, entonces en bashrc agregue el archivo

    vi ~ / .bashrc

    alias python='python3.6'
  4. ejecutar el comando bash para aplicar la configuración

    bash 
  5. Ahora puedes ver la versión a continuación

    python --version
    Python 3.6.3
IRSHAD
fuente
Esta respuesta no funcionará sin agregar uno de los repositorios de terceros EPEL o IUS. No hay paquete python36 en RHEL. El paquete RHSCL es rh-python36.
Rob T.
4

Tres pasos con Python 3.5 de Software Collections :

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

Tenga en cuenta que sudo no es necesario para el último comando. Ahora podemos ver que python 3 es el valor predeterminado para el shell actual:

python --version
Python 3.5.1

Simplemente omita el último comando si prefiere tener Python 2 como predeterminado para el shell actual.

Ahora digamos que sus scripts de Python 3 le dan un error como /usr/bin/env: python3: No such file or directory. Esto se debe a que la instalación generalmente se realiza en una ruta inusual:

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

Lo anterior normalmente sería un enlace simbólico. Si desea python3que se agregue automáticamente a $PATHtodos los usuarios en el inicio, una forma de hacerlo es agregar un archivo como:

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

Lo que tendría algo como:

#!/bin/bash

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

Y ahora después de un reinicio, si lo hacemos

python3 --version

Solo debería funcionar. Una excepción sería un usuario generado automáticamente como "jenkins" en un servidor Jenkins que no tiene un shell. En ese caso, agregar manualmente la ruta a los $PATHscripts sería un camino a seguir.

Finalmente, si está utilizando sudo pip3para instalar paquetes, pero le dice que no se puede encontrar pip3 , podría ser que tenga un secure_path en / etc / sudoers . Verificar con esto sudo visudodebería confirmarlo. Para utilizar temporalmente la RUTA estándar al ejecutar comandos, puede hacer, por ejemplo:

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

Vea esta pregunta para más detalles.

NOTA : Hay un Python 3.6 más nuevo de Software Collections, pero no lo recomendaría en este momento, porque tuve grandes dolores de cabeza al intentar instalar Pycurl. Para Python 3.5 eso no es un problema porque acabo de hacer lo sudo yum install sclo-python35-python-pycurlque funcionó de fábrica.

Nagev
fuente
No package centos-release-scl available.
Joe
Está disponible en el repositorio de CentOS.
Nagev
4

Si está en RHEL y desea un Python compatible con Red Hat, use las colecciones de Red Hat Software (RHSCL). Los paquetes EPEL e IUS no son compatibles con Red Hat. También muchas de las respuestas anteriores apuntan a las colecciones de software de CentOS. Si bien puede instalarlos, no son los paquetes compatibles con Red Hat para RHEL.

Además, la respuesta más votada da malos consejos: en RHEL no desea cambiar /usr/bin/python, /usr/bin/python2porque probablemente se romperá yumy otras herramientas de administración de RHEL. Eche un vistazo /bin/yum, es un script de Python que comienza con #!/usr/bin/python. Si compila Python desde la fuente, no lo haga make installcomo root. Eso lo sobrescribirá /usr/bin/python. Si se rompe yum, puede ser difícil restaurar su sistema.

Para obtener más información, consulte Cómo instalar Python 3, pip, venv, virtualenv y pipenv en RHEL en developers.redhat.com . Cubre la instalación y el uso de Python 3 de RHSCL, el uso de entornos virtuales de Python y una serie de consejos para trabajar con colecciones de software y trabajar con Python en RHEL.

En pocas palabras, para instalar Python 3.6 a través de Red Hat Software Collections:

$ 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

Para usar una colección de software, debe habilitarla:

scl enable rh-python36 bash

Sin embargo, si desea que Python 3 esté permanentemente habilitado, puede agregar lo siguiente a su ~ / .bashrc y luego cerrar sesión y volver a iniciarla. Ahora Python 3 está permanentemente en tu camino.

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

Nota: una vez que hagas eso, escribir pythonahora te da Python 3.6 en lugar de Python 2.7.

Vea el artículo anterior para todo esto y muchos más detalles.

Rob T.
fuente
3

Si desea paquetes oficiales de RHEL, puede usar RHSCL (Red Hat Software Collections)

Más detalles:

Debe tener acceso al Portal del cliente de Red Hat para leer los artículos completos.

daneel
fuente
//, Recién votado. ¿Estaría dispuesto a hacer un resumen de lo que se hace para usar el RHSCL para esto? Este es un sitio de preguntas y respuestas, después de todo.
Nathan Basanese
1
El artículo Cómo instalar Python 3 en RHEL tiene pasos actualizados para Python 3.6 a través de colecciones de software y muchos consejos para trabajar con RHSCL, Python y entornos virtuales.
Rob T.
3

Estos son los pasos que seguí para instalar 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
Aty
fuente
2
Si crea desde el origen sin instalar una serie de dependencias de nivel (SSL, bzip, etc.), le faltarán varios módulos que dependen de objetos compartidos. Instalar una de las distribuciones basadas en rpm (RHSCL, EPEL o IUS) es una mejor idea
Rob T.
1

yum install python34.x86_64funciona si lo has epel-releaseinstalado, lo que esta respuesta explica cómo hacerlo, y he confirmado que funcionóRHEL 7.3

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

$ type python3
python3 is hashed (/usr/bin/python3)
anfibio
fuente
1

Para RHEL en Amazon Linux, usando python3 tuve que hacer:

sudo yum install python34-devel

Maxime Martineau
fuente
1
No package python34-devel available.
Joe
1

Trabajo completo 36 cuando SCL no está disponible (basado en la entrada de Alegrías)

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

Finalmente activa el entorno ...

pyvenv-3.6 py3
source py3/bin/activate

Entonces python3

OSP
fuente
0

Puede instalar miniconda ( https://conda.io/miniconda.html ). Eso es un poco más que Python 3.7, pero la instalación es muy sencilla y simple.

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

Deberá aceptar el acuerdo de licencia y elegir algunas opciones en modo interactivo (acepte los valores predeterminados). Creo que también se puede instalar silenciosamente de alguna manera.

grabantot
fuente
No se pudo encontrar el pythoncomando real después, ¿está envuelto?
Mugen
0

Para aquellos que trabajan en AWS EC2 RHEL 7.5, ( use sudo ) habilite los repositorios requeridos

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

Instalar Python 3.6

yum install rh-python36

Instalar otras dependencias

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
Vasu
fuente