ubuntu 10.04 non ha un pacchetto python2.7. Devi costruire 2.7 da solo. Ho letto un articolo su Ubuntu che rilascia un pacchetto python2.7 quando è uscito 12.04, ma non sono sicuro di quale sia la posizione del repository.
http://eli.thegreenplace.net/2011/10/10/installing-python-2-7-on-ubuntu/
oppure:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.7
https://askubuntu.com/questions/101591/install-python-2-7-2-on-ubuntu-10-04-64-bit
questa domanda ha molte risposte online.
pyenv
https://github.com/pyenv/pyenv
Pyenv ti consente di gestire più versioni di Python senza sudo per un singolo utente, proprio come Node.js NVM e Ruby RVM.
Installa Pyenv:
curl https://pyenv.run | bash
Quindi aggiungi al tuo .bashrc
:
export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Trova la versione di Python da installare:
pyenv install --list
Installa la versione di Python che desideri:
# Increase the chances that the build will have all dependencies.
# https://github.com/pyenv/pyenv/wiki/Common-build-problems
sudo apt build-dep python3
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
# Build and install a Python version from source.
pyenv install 3.8.0
Elenca le versioni di Python disponibili:
pyenv versions
Ora abbiamo:
* system (set by /home/cirsan01/.pyenv/version)
3.8.0
Seleziona una versione diversa di Python:
pyenv global 3.8.0
python --version
python3 --version
Entrambi producono:
Python 3.8.0
Ora possiamo procedere con l'installazione e l'utilizzo dei pacchetti normalmente:
pip install cowsay
python -c 'import cowsay; cowsay.tux("Python is fun")'
cowsay 'hello'
Possiamo confermare che tutto è installato localmente nel nostro ambiente pulito con:
python -c 'import cowsay; print(cowsay.__file__)'
dà:
/home/ciro/.pyenv/versions/3.8.0/lib/python3.8/site-packages/cowsay/__init__.py
e:
which cowsay
dà:
/home/ciro/.pyenv/shims/cowsay
e:
which python
dà:
/home/ciro/.pyenv/shims/python
Utilizzo per progetto
Nella sezione precedente, abbiamo visto come utilizzare pyenv in una configurazione globale.
Tuttavia, ciò che di solito si desidera è impostare una versione specifica di Python e pacchetto in base al progetto. Ecco come farlo.
Per prima cosa installa la versione di Python desiderata come prima.
Quindi, dall'interno della directory del tuo progetto, imposta la versione python desiderata con:
pyenv local 3.8.0
che crea un file .python-version
contenente la stringa della versione.
E ora installiamo un pacchetto in locale solo per il nostro progetto:TODO:non sembra un modo carino:Pyenv scegli la directory virtualenv
Ora, quando qualcuno vuole utilizzare il tuo progetto, lo farà:
pyenv local
che imposta la versione di Python su quella corretta.
Discussioni correlate:
- https://askubuntu.com/questions/682869/how-do-i-install-a-different-python-version-using-apt-get
- https://unix.stackexchange.com/questions/9711/what-is-the-proper-way-to-manage-multiple-python-versions
- apt-get install per diverse versioni di Python
Testato su Ubuntu 18.04, pyenv 1.2.15.
Python ha le proprie funzionalità di gestione dei pacchetti, parallele a quelle impostate dalle distribuzioni Linux (incluso Ubuntu). Il repository è Pypi - Python Package Index, e i pacchetti sono installati con pip
o lo script easy_install, che fa parte del pacchetto setuptools di Python.
Come regola generale, non dovresti usare sia i pacchetti installati tramite pip/setuptools, sia i pacchetti disponibili per la tua distribuzione (tramite apt-get, yum, urpmi, ecc...) in quanto potrebbero entrare in conflitto.
Quindi, uno dei modi meno soggetti a errori per gestirlo è avere installazioni Python separate nel tuo sistema - lascia il python fornito con il sistema per gli script di sistema e simili - su questo python, usa i pacchetti installati dal tuo gestore di pacchetti solo. E installa altre versioni di Python (o anche la stessa), da eseguire con "virtualenv" - su queste altre installazioni installi cose solo con pip/setuptools.
(E anche se si sceglie di vivere con coraggio e non usare virtualenvs, installando un'altra versione di Python sullo stesso prefisso (/usr
e anche /usr/local
) rispetto al Python del tuo sistema è una fonte di errori e conflitti confusi).
Si noti che i sistemi Debian - e Ubuntu - hanno escogitato un modo per eseguire Python ufficiali paralleli in /usr e per avere apt-get per installare i pacchetti Python su entrambe le versioni di Python contemporaneamente. Questo per lo più funziona, ma fanno confusione con la gerarchia di directory predefinita di Python e alcune applicazioni non riescono a utilizzare Python in questo modo. (È anche un casino trovare i file del modulo stessi in Debian o Ubuntu). Quindi il metodo sopra si applica come raccomandazione anche se il tuo sistema ha più di una versione di Python disponibile su apt-get.
In breve, una volta che hai compilato la versione desiderata di Python, fai questo:
- usa il gestore di pacchetti del tuo sistema per installare "python-setuptools" e "python-virtualenv" (non sono sicuro che questi siano i veri nomi dei pacchetti).
- Usa
virtualenv
per creare un ambiente dal quale utilizzerai la tua diversa versione di Python - Attiva il tuo virtualenv e installa i pacchetti Python usando
pip
su di esso.
Virtualenv dispone di un interruttore "--help" per aiutarti, ma in pratica lo fai:
$ virtualenv -p <path-to-python-interpreter> <environment-dir>
$ source <environment-dir>/bin/activate
Ed ecco fatto:tutte le cose che usano Python "vedranno" l'interprete nel virtualenv, a causa delle variabili di ambiente impostate.