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 python3
essere automaticamente aggiunto a $PATH
tutti 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 $PATH
negli script sarebbe un modo per procedere.
Infine, se stai usando sudo pip3
per 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 visudo
dovrebbe 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-pycurl
che ha funzionato fuori dalla scatola.