Installazione di Python 3 su RHEL


128

Sto cercando di installare python3 su RHEL usando i seguenti passaggi:

yum search python3

Che è tornato No matches found for: python3

Seguito da:

yum search python

Nessuno dei risultati della ricerca conteneva python3. Cosa dovrei provare dopo?


Sospetto che RHEL non includa ancora Python 3. Potresti essere in grado di installare un RPM creato per Fedora: admin.fedoraproject.org/pkgdb/acls/name/python3
Thomas K

Puoi anche installare sempre dal sorgente.
Dougal,

Notando semplicemente la richiesta di revisione EPEL per Python 3.4 qui: bugzilla.redhat.com/show_bug.cgi?id=1219411 Una volta risolto, io (o qualcun altro) invierò una nuova risposta con i dettagli EPEL.
ncoghlan,

2
La risposta di Samuel Phan usando i repository yum della comunità è meglio che costruire dalla fonte, esattamente per i motivi che Samuel ha affermato. Dovresti cambiare la risposta accettata alla sua.
Edward Ned Harvey,

Risposte:


186

È facile installarlo manualmente:

  1. Download (potrebbero esserci versioni più recenti su Python.org ):

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

    $ tar xf Python-3.* 
    $ cd Python-3.*
  3. Prepara la compilation

    $ ./configure
  4. Costruire

    $ make
  5. Installare

    $ make install

    OPPURE se non si desidera sovrascrivere l' pythoneseguibile (più sicuro, almeno su alcune distro yumdeve pythonessere 2.x, come per RHEL6) - è possibile installare python3.*come istanza concorrente sul valore predefinito di sistema con un altinstall:

    $ make altinstall

Ora, se si desidera una directory di installazione alternativa, è possibile passare --prefixal configurecomando.

Esempio: per 'installare' Python in / opt / local, basta aggiungere --prefix=/opt/local.

Dopo il make installpassaggio: per utilizzare la tua nuova installazione di Python, potrebbe essere che devi ancora aggiungere il [prefisso] / bin al $PATHe il [prefisso] / lib al $LD_LIBRARY_PATH(a seconda del --prefixpassato)


9
Hai usato: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - Questa è anche una possibilità più semplice: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja

1
Ho ottenuto un 301 (spostato) in un 404 quando ho usato il tar bz2. L'ho cambiato in .tgz e si è scaricato bene.
Caleb,

2
E per me, il binario risultante è stato chiamato python3.5 e vive qui: [root @ machine python3.5] # quale python3.5 /usr/local/bin/python3.5 Quindi potresti voler aggiungere un link simbolico a questo nome python3 per comodità
sarà

6
se fai riferimento no acceptable C compiler found in $PATH when installing pythona http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
bnu,

3
./configure --with-ensurepip=installper abilitare pip3o non sarà pip3installato dopo la compilazione.
Searene,

238

L'installazione da RPM è generalmente migliore, perché:

  • puoi installare e disinstallare (correttamente) python3.
  • il tempo di installazione è molto più veloce . Se lavori in un ambiente cloud con più macchine virtuali, la compilazione di python3 su ciascuna macchina virtuale non è accettabile.

Soluzione 1: repository Red Hat ed EPEL

Red Hat ha aggiunto tramite il repository EPEL :

  • Python 3.4 per CentOS 6
  • Python 3.6 per CentOS 7

[EPEL] Come installare Python 3.4 su 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

Puoi creare il tuo virtualenv usando pyvenv:

pyvenv /tmp/foo

[EPEL] Come installare Python 3.6 su CentOS 7

Con CentOS7, pip3.6viene fornito come pacchetto :)

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

Puoi creare il tuo virtualenv usando pyvenv:

python3.6 -m venv /tmp/foo

Se usi lo pyvenvscript, otterrai un AVVISO:

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

Soluzione 2: repository della community IUS

La comunità IUS fornisce alcuni pacchetti aggiornati per RHEL e CentOS . I ragazzi dietro sono di Rackspace, quindi penso che siano abbastanza affidabili ...

https://ius.io/

Controlla il repository giusto per te qui:

https://ius.io/setup

[IUS] Come installare Python 3.6 su CentOS 6

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

Puoi creare il tuo virtualenv usando pyvenv:

python3.6 -m venv /tmp/foo

[IUS] Come installare Python 3.6 su CentOS 7

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

Puoi creare il tuo virtualenv usando pyvenv:

python3.6 -m venv /tmp/foo

1
Risolto l'URL del pacchetto di rilascio IUS. hanno aggiornato la versione, tutto qui. Se aggiornano nuovamente il pacchetto, è possibile controllare il collegamento al relativo RPM dalla pagina Web.
Samuel Phan,

1
Come ho detto, il link nella tua risposta contiene caratteri unicode non stampabili. Quando copio / incollo il tuo link, ecco cosa vedo in 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 Ecco il carattere unicode: fileformat.info/info/unicode/char/200c/index.htm L'URL nella mia risposta originale funziona, ho appena testato esso.
Samuel Phan,

1
Mi è stato detto che il repository della community IUS non è affidabile come le raccolte di software, quindi vorrei andare con la risposta di Mike Guerette su CentOS 6
bformet,

2
Usando questa soluzione, come installeresti pip per python34?
Loïc,

1
Ottima domanda, ho aggiunto un commento per questo. È il migliore che ho trovato. Se si desidera attenersi all'installazione basata su RPM, è necessario utilizzare i repository IUS per CentOS 7. Forniscono a python34u-pip.
Samuel Phan,

31

Oltre alla risposta di Gecco, cambierei il passaggio 3 da:

./configure

per:

./configure --prefix=/opt/python3

Quindi dopo l'installazione potresti anche:

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

È per garantire che l'installazione non sia in conflitto con Python installato con YUM.

Vedi la spiegazione che ho trovato su Internet:

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


16
Perché /opt? /usr/localesiste specificamente per questo scopo ed è lì che ./configuresenza esplicito --prefixlo posizionerà.
Cababunga,

@cababunga Come ho scritto, sono stato influenzato dalla lettura del tutorial dal sito specificato. Tuttavia, l'installazione di Python in questo modo potrebbe essere utilizzabile - sarebbe molto più facile disinstallarlo (sembra che non sia fornito il target di disinstallazione per make). Inoltre, è possibile installare facilmente varie versioni di python3 in directory separate specificate in / opt e impostare manualmente quale utilizzare o testare.
rsc,

È inoltre possibile impostare il PERCORSO in modo che contenga la cartella binaria. Per me è statoexport PATH=$PATH:/opt/python3/bin
Caleb l'

10

Insieme a Python 2.7 e 3.3, Red Hat Software Collections ora include Python 3.4 - tutti funzionano su RHEL 6 e 7.

I documenti RHSCL 2.0 sono disponibili su https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/

Inoltre molti articoli su developerblog.redhat.com.

modificare

Seguire queste istruzioni per installare Python 3.4 su 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

//, Questo non ci richiede di abilitare una shell speciale? In combinazione con virtualenvs, posso vedere che diventa un dolore nel culo.
Nathan Basanese,

//, Perché questo richiede scl enable rh-python34 bash? Quali sono le implicazioni per l'utilizzo in seguito?
Nathan Basanese,

C'è un modo per installare python3.5 su RedHat 6? Ho provato wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm, ma non è stato trovato.
Searene,

Devi abbonarti per ottenere le collezioni? Quanto costa?
Noumenon,

1
Non ci sono costi extra Le raccolte software RH fanno parte di tutti gli abbonamenti per sviluppatori RHEL e della maggior parte degli abbonamenti RHEL. Le sottoscrizioni di sviluppo RHEL gratuite possono essere ottenute da developers.redhat.com/download. Questi sono abbonamenti RHEL reali - tutti gli stessi bit dei diritti di produzione - ma sono a scopo di sviluppo.
Mike Guerette,

9

Utilizzare i repository 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

(Quest'ultimo comando dovrà essere eseguito ogni volta che si desidera utilizzare python27 anziché l'impostazione predefinita del sistema.)


4
Dopo aver letto i documenti di Redhat, quello che dovevo fare era; scl enable python33 bashper lanciare una nuova shell che sarà abilitata per python 3 o scl enable python33 'python hello.py'che eseguirà il tuo file python usando python 3 nella shell corrente
snacks

//, Quali altre istruzioni generiche consentirebbero anche l'installazione di Python 3.4?
Nathan Basanese,

Se siete su RHEL, utilizzare le collezioni Red Hat Software: subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms. Allora puoiyum install rh-python36 . Vedi Come installare Python 3 su RHEL per maggiori informazioni.
Rob T.


9

È possibile scaricare un RPM di origine e un RPM binario per RHEL6 / CentOS6 da qui

Questo è un backport dalla più recente fonte di sviluppo Fedora rpm a RHEL6 / CentOS6


È fantastico. Grazie per il tuo impegno, Florian. Forse correre createreposu quelle directory li renderebbe ancora più utili per alcune persone.
Cababunga,

Che sollievo. il numero di giri installato perfettamente.
Lyomi,

//, Come possiamo creare un repository da quel link?
Nathan Basanese,

//, posso confermare che funziona. Aspetta, ho appena preparato qualcosa che ha usato quell'URL come baseurl: 0bin.net/paste/…
Nathan Basanese

6

Vedo tutte le risposte come chiedere di compilare python3 dal codice o installare il pacchetto RPM binario. Ecco un'altra risposta per abilitare EPEL (pacchetti extra per Enterprise Linux) e quindi installare python usando yum. Passaggi per 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

Vedi anche il link


Funziona bene, soprattutto se il modo ufficiale attraverso SCL non funziona. Completa l'installazione pip3 quindi:sudo yum install python34-setuptools
OSP

5

Stavo riscontrando lo stesso problema con Python 2.7. Seguire i passaggi seguenti per eseguire l'aggiornamento a 3.6. Puoi anche provare questo-

  1. Vedere prima di aggiornare la versione è 2.x

    python --version
    Python 2.7.5
  2. Usa il comando seguente per aggiornare il tuo Python alla versione 3.x-

    yum installa python3x

    sostituire x con il numero di versione desiderato.

    cioè per l'installazione di python 3.6 eseguire

    yum install python36
  3. Dopodiché, se vuoi impostare questo python per la tua versione predefinita, aggiungi nel file bashrc

    vi ~ / .bashrc

    alias python='python3.6'
  4. eseguire il comando bash per applicare le impostazioni

    bash 
  5. Ora puoi vedere la versione qui sotto

    python --version
    Python 3.6.3

Questa risposta non funzionerà senza l'aggiunta di uno dei repository di terze parti EPEL o IUS. Non esiste un pacchetto python36 in RHEL. Il pacchetto RHSCL è rh-python36.
Rob T.

4

Tre passaggi con Python 3.5 di Software Collections :

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

Nota che sudo non è necessario per l'ultimo comando. Ora possiamo vedere che python 3 è il valore predefinito per la shell corrente:

python --version
Python 3.5.1

Basta saltare l'ultimo comando se si preferisce Python 2 come predefinito per la shell corrente.

Ora diciamo che i tuoi script Python 3 ti danno un errore simile /usr/bin/env: python3: No such file or directory. Questo perché l'installazione viene generalmente eseguita in un percorso insolito:

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

Quanto sopra sarebbe normalmente un link simbolico. Se vuoi python3essere automaticamente aggiunto a $PATHtutti gli utenti all'avvio, un modo per farlo è aggiungere un file come:

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

Che avrebbe qualcosa del tipo:

#!/bin/bash

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

E ora dopo un riavvio, se lo facciamo

python3 --version

Dovrebbe solo funzionare. Un'eccezione sarebbe un utente generato automaticamente come "jenkins" in un server Jenkins che non ha una shell. In tal caso, aggiungere manualmente il percorso $PATHnegli script sarebbe un modo per procedere.

Infine, se stai usando sudo pip3per installare i pacchetti, ma ti dice che pip3 non può essere trovato, potrebbe essere che tu abbia un percorso sicuro in / etc / sudoers . Il controllo con sudo visudodovrebbe confermare ciò. Per utilizzare temporaneamente il PERCORSO standard durante l'esecuzione di comandi, ad esempio:

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

Vedi questa domanda per maggiori dettagli.

NOTA : Esiste un Python 3.6 più recente di Software Collections, ma non lo consiglierei in questo momento, perché ho avuto grossi mal di testa nel tentativo di installare Pycurl. Per Python 3.5 questo non è un problema perché ho appena fatto quello sudo yum install sclo-python35-python-pycurlche ha funzionato fuori dalla scatola.


No package centos-release-scl available.
Joe

È disponibile nel repository CentOS.
Nagev,

4

Se sei su RHEL e desideri un Python supportato da Red Hat, usa le raccolte di software Red Hat (RHSCL). I pacchetti EPEL e IUS non sono supportati da Red Hat. Inoltre, molte delle risposte sopra menzionano le raccolte di software CentOS. Sebbene sia possibile installarli, non sono i pacchetti supportati da Red Hat per RHEL.

Inoltre, la risposta più votata dà dei cattivi consigli: su RHEL non vuoi cambiare /usr/bin/python, /usr/bin/python2perché probabilmente ti romperai yume altri strumenti di amministrazione di RHEL. Dai un'occhiata /bin/yum, è uno script Python che inizia con #!/usr/bin/python. Se compili Python dal sorgente, non fare make installcome root. Questo sovrascriverà /usr/bin/python. Se rompiyum , può essere difficile ripristinare il sistema.

Per altre info, vedi Come installare Python 3, pip, venv, virtualenv e pipenv su RHEL su developers.redhat.com . Copre l'installazione e l'uso di Python 3 da RHSCL, l'utilizzo di ambienti virtuali Python e una serie di suggerimenti per lavorare con raccolte software e lavorare con Python su RHEL.

In breve, per installare Python 3.6 tramite 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

Per utilizzare una raccolta software devi abilitarla:

scl enable rh-python36 bash

Tuttavia, se si desidera abilitare permanentemente Python 3, è possibile aggiungere quanto segue a ~ / .bashrc, quindi disconnettersi e riconnettersi. Ora Python 3 è permanentemente sul tuo percorso.

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

Nota: una volta fatto ciò, digitando pythonora si ottiene Python 3.6 invece di Python 2.7.

Vedi l'articolo sopra per tutto questo e molti più dettagli.


3

Se desideri pacchetti RHEL ufficiali, puoi utilizzare RHSCL (Red Hat Software Collections)

Più dettagli:

Devi avere accesso al Portale clienti di Red Hat per leggere gli articoli completi.


//, appena votato. Saresti disposto a fare un riassunto di ciò che si fa per utilizzare l'RHSCL per questo? Questo è un sito di domande e risposte, dopo tutto.
Nathan Basanese,

1
L'articolo Come installare Python 3 su RHEL contiene passaggi aggiornati per Python 3.6 tramite raccolte software e molti suggerimenti per lavorare con RHSCL, Python e ambienti virtuali.
Rob T.

3

Ecco i passaggi che ho seguito per installare 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
Se costruisci dal sorgente senza installare una serie di dipendenze -devel (SSL, bzip, ecc.) Perderai un numero di moduli che dipendono da oggetti condivisi. Installare una delle distribuzioni basate su rpm (RHSCL, EPEL o IUS) è ​​un'idea migliore
Rob T.

1

yum install python34.x86_64funziona se hai epel-releaseinstallato, che questa risposta spiega come, e ho confermato che ha funzionatoRHEL 7.3

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

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

1

Per RHEL su Amazon Linux, usando python3 ho dovuto fare:

sudo yum installa python34-devel


1
No package python34-devel available.
Joe

1

36 funzionanti quando SCL non è disponibile (basato sull'input 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

Finalmente attivare l'ambiente ...

pyvenv-3.6 py3
source py3/bin/activate

Quindi python3


0

Puoi installare miniconda ( https://conda.io/miniconda.html ). Questo è un po 'più di un semplice Python 3.7 ma l'installazione è molto semplice e diretta.

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

Dovrai accettare il contratto di licenza e scegliere alcune opzioni in modalità interattiva (accetta le impostazioni predefinite). Credo che possa anche essere installato in silenzio in qualche modo.


Non è stato possibile trovare il pythoncomando vero dopo, è avvolto?
Mugen,

0

Per coloro che lavorano su AWS EC2 RHEL 7.5, ( usa sudo ) abilita i repository richiesti

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

Installa Python 3.6

yum install rh-python36

Installa altre dipendenze

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.