web-dev-qa-db-fra.com

Comment installer le dernier Python 2.7.X ou 3.X sur Ubuntu?

Je souhaite installer la dernière archive Python sur Ubuntu, téléchargée à partir de http://python.org/download/ .

Est-ce une façon correcte d’installer?

./configure
make
make install

Si non, comment je fais ça?

180
mohammads

Tout d'abord, installez quelques dépendances:

Sudo apt-get install build-essential checkinstall
Sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Puis téléchargez en utilisant la commande suivante:

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz

Extraire et aller dans le répertoire:

tar -xvf Python-$version.tgz
cd Python-$version

A présent, installez à l'aide de la commande que vous venez d'essayer, en utilisant checkinstall pour faciliter la désinstallation, si nécessaire:

./configure
make
Sudo checkinstall

Remplacez version par la version dont vous avez besoin (version=2.7.1 ou version=3.6.0, par exemple).

196
Achu

À moins que vous ne désiriez vraiment le compiler vous-même, la méthode préférée consiste à utiliser le DeadSnakes PPA pour installer les versions de Python qui ne sont pas incluses par défaut:

Sudo add-apt-repository ppa:deadsnakes/ppa
Sudo apt-get update
Sudo apt-get install python2.7

D'autres versions, telles que python2.4 ou python3.6, etc. sont également disponibles.

179
brousch

Continuer à documenter cela pour les dernières versions d'Ubuntu1 : pour le serveur Ubuntu 16.04.1, la valeur par défaut Python est la version 3.5, et Python 2.7 est non installé par défaut. Sur une nouvelle installation (notez qu'il n'y a même pas d'exécutable pythonname__):

$ type python3 python2 python 
python3 is /usr/bin/python3
-bash: type: python2: not found
-bash: type: python: not found

$ python3 --version 
Python 3.5.2

$ python --version 
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Try: Sudo apt install <selected package>

Note: avant de continuer, vous voudrez probablement faire un rapide Sudo apt-get update, Sudo apt-get upgrade et Sudo apt-get dist-upgrade (veuillez noter exactement ce que font ces commandes; je suppose une nouvelle installation ici.)

L'installation de python 2.7 est aussi simple que:

$ Sudo apt-get install python2.7

La sortie initiale de l’installation de python 2.7 est la suivante:

$ Sudo apt-get install python2.7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7-minimal
Suggested packages:
  python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,735 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc, etc...

Après avoir installé python 2.7,

$ type python3 python2.7 python3.5 python2 python
python3 is /usr/bin/python3
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5
bash: type: python2: not found
bash: type: python: not found

Mais il y a toujours un problème, car vous ne pouvez pas encore installer les modules PyPI via pip- par exemple, si vous voulez jupyter notebook, ou le dernier scipy ou numpy (etc), vous voudrez installer pippuis pip install ceux-ci, puis continuant à utiliser apt-get pour installer les dépendances nécessaires système, telles que graphviz ou les bibliothèques système principales.

$ type pip3 pip2 pip
bash: type: pip3: not found
bash: type: pip2: not found
bash: type: pip: not found

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Donc, pour installer pip, c'est aussi simple que Sudo apt-get install python-pip:

$ Sudo apt-cache search -n pip | egrep '^python[0-9]*-pip'
python-pip - alternative Python package installer
python-pip-whl - alternative Python package installer
python3-pip - alternative Python package installer - Python 3 version of the package

Vous aurez besoin de python-pip pour le Python 2.7 pipet du python3-pip pour le Python 3 pipname__. L’installation via apt-get permet d’installer les dépendances requises; par exemple, voici la sortie pour installer pip2:

$ Sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-Perl
  libalgorithm-diff-xs-Perl libalgorithm-merge-Perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-Perl libexpat1-dev libfakeroot libfile-fcntllock-Perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl
  python-pkg-resources python-setuptools python-wheel python2.7-dev
Suggested packages:
  binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib
  autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc
  python-tk python-setuptools-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-Perl
  libalgorithm-diff-xs-Perl libalgorithm-merge-Perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-Perl libexpat1-dev libfakeroot libfile-fcntllock-Perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip
  python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc...

Il en résulte une chose intéressante: vous disposez maintenant du "standard" (et du PEP recommandé) python2 et python3 (qui ne sont que des liens symboliques vers python 2.7 et python 3.5):

$ type python3 python2 python python2.7 python3.5 
python3 is /usr/bin/python3
python2 is /usr/bin/python2
python is /usr/bin/python
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5

Vous voudrez aussi Sudo apt-get install python3-pip; avant d'installer, vous avez:

$ type pip pip2 pip3
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
-bash: type: pip3: not found

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Après avoir installé pip3,

$ Sudo apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0 MB of archives.
After this operation, 55.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
...etc...

Les versions résultantes:

$ type python python2 python3 pip pip2 pip3
python is /usr/bin/python
python2 is hashed (/usr/bin/python2)
python3 is hashed (/usr/bin/python3)
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
pip3 is /usr/bin/pip3

$ pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Et une dernière chose avant de pouvoir commencer à installer tous vos modules PyPI favoris python: vous devrez probablement mettre à niveau pip lui-même (à la fois pip2 et pip3, séparément; de plus, peu importe si pipest appelé via les exécutables pythonou les exécutables pipname__, les mises à niveau réelles sont stockées dans /usr/lib):

$ Sudo -H python2 -m pip install --upgrade pip
...
$ Sudo -H python3 -m pip install --upgrade pip
...

Vous pouvez maintenant exécuter la version autonome pipou la version fournie dans python(via python -m pip {command}).


[1] Résumé historique: Les anciennes Ubuntu n’avaient que Python 2.6, donc toutes les méthodes pour obtenir Python 2.7+ installé. Plus tard, après l’ajout de Python 2.7 aux référentiels publics, le même défi consistait toujours à installer le plus récent Python 2.7 avec les derniers correctifs, ce qui était (trop) souvent nécessaire. La situation actuelle est bien meilleure/plus simple: les versions actuelles de Python 2.7 et 3.5 (essentiellement les deux seules versions de plate-formes Python dont les utilisateurs se soucient) qui sont maintenant dans les dépôts publics sont très stables, maintenant, nous n'avons plus qu'à nous préoccuper d'installer la dernière python modules, pas la dernière (python. Alors maintenant, le Python "problème de la dernière version" a été déplacé en partie hors du dépôt du système d'exploitation & aptet dans PyPI & pipname__.)

26
michael

12.04

Si vous suivez réponse d'Ach , alors le terme libread5-dev devrait être changé en libreadline-gplv2-dev. Donc, la commande complète serait:

Sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
11
ThatGuy

Vous pouvez également le télécharger et l’installer via pyenv

#Install Pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

#Install Python
pyenv install 2.7.8
pyenv global 2.7.8

pyenv install 3.4.5
pyenv global 3.4.5
4
Whispered

Surtout un miroir de cette réponse avec une intro peaufinée

Je recommanderais pyenv . Il automatise le processus de construction en dehors de l'installation des dépendances d'en-tête (voir ci-dessous). Vous pouvez créer et installer une nouvelle (ou une ancienne) version de Python en disant simplement pyenv install 3.6.0. Tout fonctionne comme votre utilisateur, vous n'avez donc pas à vous soucier de foiré le code Python utilisé par Ubuntu lui-même.

Contrairement à certaines options basées sur apt-repo (par exemple, deadsnakes), il fonctionnera généralement le jour même d'une publication après un pyenv update car il n'est pas nécessaire d'attendre que quelqu'un d'autre le compresse. Voir toutes les versions que vous pouvez installer avec pyenv install --list

Installer pyenv

  1. Installez les outils et les en-têtes nécessaires à la construction de CPythons (des Pythons exotiques comme PyPy ou Jython peuvent avoir d'autres dépendances). Pyitv utilise Git, mais il permet également de créer/installer des branches sources, ce qui vous permet d’installer tout ce que fait actuellement 3.8, c’est-à-dire la branche principale de CPython fraîchement sortie de GitHub:

    Sudo apt-get install -y git
    Sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libffi-dev libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    Sudo apt-get install -y libpng-dev libfreetype6-dev    
    
  2. Exécutez le script d'installation (installe pyenv et quelques plugins pyenv très utiles de l'auteur original; voir ici pour en savoir plus)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    
  3. Ajoutez des lignes init à votre ~/.profile ou ~/.bashrc (il est mentionné à la fin du script d'installation):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  4. Redémarrez votre shell (close & open ou exec $Shell) ou rechargez le script de profil. (avec par exemple source ~/.bashrc)

Terminé!

Mise en place d'un environnement

Pour ne pas toucher le système Python (généralement une mauvaise idée; les services au niveau du système d'exploitation peuvent s'appuyer sur des versions de bibliothèque spécifiques, etc.), créez votre propre environnement, c'est simple! Mieux encore, aucun Sudo, ni pip n'est installé!

  1. Installez votre version préférée de Python (cela téléchargera le code source et le construira pour votre utilisateur, aucune entrée requise)

    pyenv install 3.6.0
    
  2. Faites-en un virtualenv afin que vous puissiez faire les autres plus tard si vous voulez

    pyenv virtualenv 3.6.0 general
    
  3. Faites-le actif globalement (pour votre utilisateur)

    pyenv global general
    
  4. Faites ce que vous voulez avec Python/pip, etc. C'est à vous.

Si vous souhaitez nettoyer vos bibliothèques ultérieurement, vous pouvez supprimer le virtualenv (pyenv uninstall general) ou en créer un nouveau (pyenv virtualenv 3.6.0 other_proj). Vous pouvez également avoir des environnements actifs par répertoire: pyenv local other_proj déposera un fichier .python-version dans votre dossier actuel et chaque fois que vous invoquerez Python ou installer Python utilitaires installé par-dessous, ils seront calés par Pyenv.

Dépannage

  • bash: pyenv: command not found, fish: Unknown command 'pyenv'

    1. Vérifiez votre $PATH, il devrait y avoir une entrée qui se termine par quelque chose comme .pyenv/bin. S'il manque, assurez-vous de suivre # 3 ET # 4 (redémarrez votre shell) sous Installer pyenv ci-dessus.
  • pyenv: no such command 'virtualenv'

    1. Si vous n'avez pas utilisé le script du programme d'installation, vous n'avez probablement installé que le package racine pyenv. Voir pyenv-virtualenv pour les instructions pour ajouter le plugin
    2. Si vous avez utilisé le script du programme d’installation, vérifiez s’il apparaît avec pyenv commands.
0
Nick T