Installation de Python 3 sur RHEL


128

J'essaye d'installer python3 sur RHEL en suivant les étapes suivantes:

yum search python3

Qui est revenu No matches found for: python3

Suivi par:

yum search python

Aucun des résultats de la recherche ne contenait python3. Que dois-je essayer ensuite?


Je soupçonne que RHEL n'inclut pas encore Python 3. Vous pourrez peut-être installer un RPM construit pour Fedora: admin.fedoraproject.org/pkgdb/acls/name/python3
Thomas K

Vous pouvez également toujours installer à partir de la source.
Dougal

En notant simplement la demande de révision EPEL pour Python 3.4 ici: bugzilla.redhat.com/show_bug.cgi?id=1219411 Une fois que cela est résolu, je (ou quelqu'un d'autre) publierai une nouvelle réponse avec les détails EPEL.
ncoghlan

2
La réponse de Samuel Phan en utilisant les dépôts yum communautaires est meilleure que la construction à partir de la source, pour exactement les raisons que Samuel a exposées. Vous devez remplacer la réponse acceptée par la sienne.
Edward Ned Harvey

Réponses:


186

Il est facile de l'installer manuellement:

  1. Télécharger (il peut y avoir des versions plus récentes sur Python.org ):

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
  2. Décompressez

    $ tar xf Python-3.* 
    $ cd Python-3.*
  3. Préparer la compilation

    $ ./configure
  4. Construire

    $ make
  5. Installer

    $ make install

    OU si vous ne voulez pas écraser l' pythonexécutable (plus sûr, au moins sur certaines distributions yumdoit pythonêtre 2.x, comme pour RHEL6) - vous pouvez installer en python3.*tant qu'instance simultanée à la valeur par défaut du système avec un altinstall:

    $ make altinstall

Maintenant, si vous voulez un autre répertoire d'installation, vous pouvez passer --prefixà la configurecommande.

Exemple: pour 'installer' Python dans / opt / local, ajoutez simplement --prefix=/opt/local.

Après l' make installétape: Afin d'utiliser votre nouvelle installation Python, il se peut que vous deviez encore ajouter le [prefix] / bin au $PATHet [prefix] / lib au $LD_LIBRARY_PATH(en fonction de celui que --prefixvous avez passé)


9
Vous avez utilisé: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - C'est aussi une posiblité plus simple: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja

1
J'ai eu un 301 (déplacé) dans un 404 lors de l'utilisation du tar bz2. Je l'ai changé en .tgz et il s'est bien téléchargé.
Caleb

2
Et pour moi, le binaire résultant a été nommé python3.5 et vit ici: [root @ machine python3.5] # which python3.5 /usr/local/bin/python3.5 Vous voudrez peut-être ajouter un lien symbolique à ce nommé python3 pour plus de commodité
Sera

6
si vous êtes no acceptable C compiler found in $PATH when installing pythonrenvoyé à http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
bnu

3
./configure --with-ensurepip=installà activer pip3, ou vous ne l'aurez pas pip3installé après la compilation.
Searene

238

L'installation à partir de RPM est généralement meilleure, car:

  • vous pouvez installer et désinstaller (correctement) python3.
  • le temps d'installation est beaucoup plus rapide . Si vous travaillez dans un environnement cloud avec plusieurs VM, la compilation de python3 sur chaque VM n'est pas acceptable.

Solution 1: référentiels Red Hat et EPEL

Red Hat a ajouté via le référentiel EPEL :

  • Python 3.4 pour CentOS 6
  • Python 3.6 pour CentOS 7

[EPEL] Comment installer Python 3.4 sur 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

Vous pouvez créer votre virtualenv en utilisant pyvenv:

pyvenv /tmp/foo

[EPEL] Comment installer Python 3.6 sur CentOS 7

Avec CentOS7, pip3.6est fourni sous forme de package :)

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

Vous pouvez créer votre virtualenv en utilisant pyvenv:

python3.6 -m venv /tmp/foo

Si vous utilisez le pyvenvscript, vous obtiendrez un AVERTISSEMENT:

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

Solution 2: référentiels de la communauté IUS

La communauté IUS fournit des packages à jour pour RHEL et CentOS . Les gars derrière sont de Rackspace, donc je pense qu'ils sont assez dignes de confiance ...

https://ius.io/

Vérifiez le bon repo pour vous ici:

https://ius.io/setup

[IUS] Comment installer Python 3.6 sur CentOS 6

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

Vous pouvez créer votre virtualenv en utilisant pyvenv:

python3.6 -m venv /tmp/foo

[IUS] Comment installer Python 3.6 sur CentOS 7

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

Vous pouvez créer votre virtualenv en utilisant pyvenv:

python3.6 -m venv /tmp/foo

1
Correction de l'URL du package de version IUS. ils ont mis à jour la version, c'est tout. S'ils mettent à nouveau à jour le package, vous pouvez vérifier le lien vers leur RPM sur la page Web.
Samuel Phan

1
Comme je l'ai dit, le lien dans votre réponse contient des caractères Unicode non imprimables. Lorsque je copie / colle votre lien, voici ce que je vois dans 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 Voici le caractère unicode: fileformat.info/info/unicode/char/200c/index.htm L'URL dans ma réponse originale fonctionne, je viens de tester il.
Samuel Phan

1
On m'a dit que le référentiel de la communauté IUS n'est pas aussi fiable que les collections de logiciels, alors j'irais avec la réponse de Mike Guerette sur CentOS 6
bformet

2
En utilisant cette solution, comment installeriez-vous alors pip pour python34?
Loïc

1
Très bonne question, j'ai ajouté un commentaire à ce sujet. C'est le meilleur que j'ai trouvé. Si vous souhaitez vous en tenir à une installation basée sur RPM, vous devez utiliser les référentiels IUS pour CentOS 7. Ils fournissent un fichier python34u-pip.
Samuel Phan

31

En plus de la réponse de gecco, je changerais l'étape 3 de:

./configure

à:

./configure --prefix=/opt/python3

Ensuite, après l'installation, vous pouvez également:

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

C'est pour s'assurer que l'installation n'entrera pas en conflit avec python installé avec yum.

Voir l'explication que j'ai trouvée sur Internet:

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


16
Pourquoi /opt? /usr/localexiste spécifiquement à cet effet et c'est là ./configureque sans explicite --prefixle placera.
cababunga

@cababunga Comme je l'ai écrit, j'ai été influencé par la lecture du tutoriel à partir du site spécifié. Néanmoins, l'installation de python de la manière ci-dessus peut être utilisable - il serait beaucoup plus facile de le désinstaller (il semble que la cible de désinstallation pour make n'est pas fournie). Vous pouvez également facilement installer diverses versions de python3 dans des répertoires séparés spécifiés sous / opt et définir manuellement celle à utiliser ou à tester.
rsc

Vous pouvez également configurer votre PATH pour qu'il contienne le dossier binaires. Pour moi c'étaitexport PATH=$PATH:/opt/python3/bin
Caleb

10

Avec Python 2.7 et 3.3, Red Hat Software Collections inclut désormais Python 3.4 - tous fonctionnent à la fois sur RHEL 6 et 7.

Les documents RHSCL 2.0 sont à https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/

Plus de nombreux articles sur developerblog.redhat.com.

Éditer

Suivez ces instructions pour installer Python 3.4 sur RHEL 6/7 ou 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

//, Cela ne nous oblige-t-il pas à activer un shell spécial? Combiné avec des virtualenvs, je peux voir que cela devient une douleur dans le cul.
Nathan Basanese

//, Pourquoi cela nécessite-t-il scl enable rh-python34 bash? Quelles sont les implications pour une utilisation ultérieure?
Nathan Basanese

Existe-t-il un moyen d'installer python3.5 sur RedHat 6? J'ai essayé wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm, mais il n'a pas été trouvé.
Searene

Vous devez vous abonner pour obtenir les collections? Combien ça coûte?
Noumenon

1
Il n'y a pas de frais supplémentaires. Les collections de logiciels RH font partie de tous les abonnements de développeurs RHEL et de la plupart des abonnements RHEL. Des abonnements de développement RHEL gratuits peuvent être obtenus à partir de développeurs.redhat.com/download. Ce sont de vrais abonnements RHEL - tous les mêmes bits que les droits de production - mais sont à des fins de développement.
Mike Guerette

9

Utilisez les dépôts 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

(Cette dernière commande devra être exécutée chaque fois que vous souhaitez utiliser python27 plutôt que la valeur par défaut du système.)


4
Après avoir lu la documentation redhat, ce que j'avais à faire était soit; scl enable python33 bashpour lancer un nouveau shell qui sera activé pour python 3 ou scl enable python33 'python hello.py'qui exécutera votre fichier python en utilisant python 3 dans le shell actuel
collations

//, Quelles instructions plus génériques permettraient également l'installation de Python 3.4?
Nathan Basanese

Si vous êtes sur RHEL, utilisez collections Red Hat Software: subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms. Alors tu peux yum install rh-python36. Voir Comment installer Python 3 sur RHEL pour plus d'informations.
Rob T.


9

Vous pouvez télécharger un RPM source et des RPM binaires pour RHEL6 / CentOS6 à partir d' ici

Ceci est un backport du dernier rpm source de développement Fedora à RHEL6 / CentOS6


C'est génial. Merci pour vos efforts, Florian. Peut-être que courir createreposur ces répertoires les rendrait encore plus utiles pour certaines personnes.
cababunga

Quel soulagement. le rpm installé parfaitement.
lyomi

//, Comment créer un dépôt à partir de ce lien?
Nathan Basanese

//, je peux confirmer que cela fonctionne. Attendez, je viens de créer quelque chose de rapide qui utilisait cette URL comme baseurl: 0bin.net/paste
Nathan Basanese

6

Je vois toutes les réponses comme demandant soit de compiler python3 à partir du code, soit d'installer le package binaire RPM. Voici une autre réponse pour activer EPEL (Extra Packages for Enterprise Linux), puis installer python en utilisant yum. Étapes pour 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

Voir aussi le lien


Fonctionne bien, surtout si le moyen officiel via SCL ne fonctionne pas. Compléter l'installation de pip3 alors:sudo yum install python34-setuptools
OSP

5

J'avais le même problème en utilisant le python 2.7. Suivez les étapes ci-dessous pour réussir la mise à niveau vers la version 3.6. Vous pouvez également essayer celui-ci-

  1. Voir avant de mettre à niveau la version 2.x

    python --version
    Python 2.7.5
  2. Utilisez la commande ci-dessous pour mettre à niveau votre python vers la version 3.x-

    miam installer python3x

    remplacez x par le numéro de version souhaité.

    ie pour installer python 3.6 exécutez

    yum install python36
  3. Après cela, si vous souhaitez définir ce python pour votre version par défaut , ajoutez un fichier bashrc

    vi ~ / .bashrc

    alias python='python3.6'
  4. exécuter la commande bash pour appliquer les paramètres

    bash 
  5. Vous pouvez maintenant voir la version ci-dessous

    python --version
    Python 3.6.3

Cette réponse ne fonctionnera pas sans ajouter l'un des dépôts tiers EPEL ou IUS. Il n'y a pas de package python36 dans RHEL. Le package RHSCL est rh-python36.
Rob T.

4

Trois étapes en utilisant Python 3.5 par Software Collections :

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

Notez que sudo n'est pas nécessaire pour la dernière commande. Nous pouvons maintenant voir que python 3 est la valeur par défaut du shell actuel:

python --version
Python 3.5.1

Ignorez simplement la dernière commande si vous préférez avoir Python 2 par défaut pour le shell actuel.

Maintenant, disons que vos scripts Python 3 vous donnent une erreur comme /usr/bin/env: python3: No such file or directory. C'est parce que l'installation se fait généralement sur un chemin inhabituel:

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

Ce qui précède serait normalement un lien symbolique. Si vous souhaitez python3être automatiquement ajouté au $PATHpour tous les utilisateurs au démarrage, une façon de le faire consiste à ajouter un fichier comme:

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

Ce qui aurait quelque chose comme:

#!/bin/bash

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

Et maintenant après un redémarrage, si nous le faisons

python3 --version

Cela devrait juste fonctionner. Une exception serait un utilisateur généré automatiquement comme "jenkins" dans un serveur Jenkins qui n'a pas de shell. Dans ce cas, ajouter manuellement le chemin d'accès $PATHdans les scripts serait une solution.

Enfin, si vous utilisez sudo pip3pour installer des packages, mais que cela vous indique que pip3 est introuvable, il se peut que vous ayez un secure_path dans / etc / sudoers . Vérifier avec sudo visudodevrait le confirmer. Pour utiliser temporairement le PATH standard lors de l'exécution de commandes, vous pouvez faire, par exemple:

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

Voir cette question pour plus de détails.

REMARQUE : Il existe un Python 3.6 plus récent de Software Collections, mais je ne le recommanderais pas pour le moment, car j'avais de gros maux de tête en essayant d'installer Pycurl. Pour Python 3.5, ce n'est pas un problème car je viens de faire sudo yum install sclo-python35-python-pycurlce qui a fonctionné immédiatement.


No package centos-release-scl available.
Joe

Il est disponible dans le référentiel CentOS.
Nagev

4

Si vous êtes sur RHEL et souhaitez un Python pris en charge par Red Hat, utilisez les collections de logiciels Red Hat (RHSCL). Les packages EPEL et IUS ne sont pas pris en charge par Red Hat. De nombreuses réponses ci-dessus concernent également les collections de logiciels CentOS. Bien que vous puissiez les installer, ce ne sont pas les packages pris en charge par Red Hat pour RHEL.

En outre, la réponse la plus votée donne de mauvais conseils - Sur RHEL, vous ne voulez pas changer /usr/bin/python, /usr/bin/python2car vous risquez de casser yumet d'autres outils d'administration RHEL. Jetez un coup d'œil /bin/yum, c'est un script Python qui commence par #!/usr/bin/python. Si vous compilez Python à partir des sources, ne faites pas de fichier en tant make installque root. Cela écrasera /usr/bin/python. Si vous cassez, yumil peut être difficile de restaurer votre système.

Pour plus d'informations, consultez Comment installer Python 3, pip, venv, virtualenv et pipenv sur RHEL sur developer.redhat.com . Il couvre l'installation et l'utilisation de Python 3 à partir de RHSCL, l'utilisation d'environnements virtuels Python, et un certain nombre de conseils pour travailler avec des collections de logiciels et travailler avec Python sur RHEL.

En un mot, pour installer Python 3.6 via les collections de logiciels Red Hat:

$ 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

Pour utiliser une collection de logiciels, vous devez l'activer:

scl enable rh-python36 bash

Cependant, si vous voulez que Python 3 soit activé en permanence, vous pouvez ajouter ce qui suit à votre ~ / .bashrc, puis vous déconnecter et vous reconnecter. Maintenant, Python 3 est en permanence sur votre chemin.

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

Remarque: une fois que vous faites cela, taper pythonvous donne maintenant Python 3.6 au lieu de Python 2.7.

Voir l'article ci-dessus pour tout cela et beaucoup plus de détails.


3

Si vous voulez des packages RHEL officiels, vous pouvez utiliser RHSCL (Red Hat Software Collections)

Plus de détails:

Vous devez avoir accès au portail client Red Hat pour lire les articles complets.


//, Je viens de voter. Seriez-vous prêt à faire un résumé de ce que l'on fait pour utiliser la RHSCL à cette fin? C'est un site de questions et réponses, après tout.
Nathan Basanese

1
L'article Comment installer Python 3 sur RHEL contient des étapes à jour pour Python 3.6 via des collections de logiciels et de nombreux conseils pour travailler avec RHSCL, Python et les environnements virtuels.
Rob T.

3

Voici les étapes que j'ai suivies pour installer 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

2
Si vous construisez à partir des sources sans installer un certain nombre de dépendances de niveau (SSL, bzip, etc.), il vous manquera un certain nombre de modules qui dépendent d'objets partagés. L'installation d'une des distributions basées sur rpm (RHSCL, EPEL ou IUS) est une meilleure idée
Rob T.

1

yum install python34.x86_64fonctionne si vous avez epel-releaseinstallé, ce que cette réponse explique comment, et j'ai confirmé que cela fonctionnaitRHEL 7.3

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

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

1

Pour RHEL sur Amazon Linux, en utilisant python3, je devais faire:

sudo yum installer python34-devel


1
No package python34-devel available.
Joe

1

Fonctionnement complet 36 lorsque SCL n'est pas disponible (basé sur l'entrée 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

Activez enfin l'environnement ...

pyvenv-3.6 py3
source py3/bin/activate

Puis python3


0

Vous pouvez installer miniconda ( https://conda.io/miniconda.html ). C'est un peu plus que juste python 3.7 mais l'installation est très simple et directe.

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

Vous devrez accepter le contrat de licence et choisir certaines options en mode interactif (accepter les valeurs par défaut). Je pense qu'il peut également être installé silencieusement d'une manière ou d'une autre.


Impossible de trouver la pythoncommande réelle par la suite, est-elle encapsulée?
Mugen

0

Pour ceux qui travaillent sur AWS EC2 RHEL 7.5, ( utilisez sudo ) activez les dépôts requis

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

Installez Python 3.6

yum install rh-python36

Installer d'autres dépendances

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.