Question Comment installer les derniers Python 2.7.X ou 3.X sur Ubuntu?


Je veux installer la dernière archive tar Python sur Ubuntu, téléchargée depuis http://python.org/download/.

Est-ce une bonne façon d'installer?

./configure
make
make install

Si non, comment puis-je faire ça?


157
2018-02-05 12:02


origine


A un moment, j'imagine que cela a été demandé afin d'installer un plus récent version de python sur Ubuntu. Maintenant, il est nécessaire d'installer un plus âgée  version de python sur Ubuntu (parce que nous encore nécessite python 2.7 pour beaucoup de choses) ... tl; dr: cette réponse n'est plus actuelle / correcte. Au lieu de cela, supposons que python3 soit installé par défaut (et peut-être un python2.x minimal), puis exécutez: sudo apt-get install python-2.7 python-pip - michael
@michael_n De quoi parlez-vous? La compilation à partir de la source ne rend pas cette réponse incorrecte ou obsolète. c'est juste une méthode différente. vous pouvez utiliser pour automatiser le processus pour vous si nécessaire. - jargonjunkie
Vous utilisez ce dont vous avez besoin. Je ne vois pas vraiment en quoi cela soutient votre affirmation selon laquelle cela serait dépassé. Comme vous l'avez dit vous-même, utilisez-le quand vous en avez besoin car il est possible qu'il ne soit pas disponible. Par exemple, sous-système Windows pour Linux utilise des logiciels datés même si la distribution est ubuntu 16.04.1 (version bêta) et utilise python2.6.2, et python3 même si le courant est python2.7.12. Dans ce cas, je devrais compiler si je veux des paquets à jour - jargonjunkie
@ jargonjunkie vous êtes hors sujet, mais correct. Si la question est "Comment installer python 2.7 sur Ubuntu 16.04+" qui est (puisque 16.04 est maintenant disponible, ce qui est mon point), alors vous simplement sudo apt-get install python2.7. C'est non seulement plus facile, c'est la seule réponse correcte, puisque c'est la seule façon de gérer l'installation des modules python via apt-get et leurs dépendances à leur tour. - michael
J'espère que cela aide à illustrer (réponse ajoutée). l'écosystème python est très particulier / finicky, et vous pouvez facilement entrer dans "dependency hell" si vous ne construisez pas soigneusement votre environnement python askubuntu.com/a/831075/17060 - michael


Réponses:


Tout d'abord, installez des 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

Maintenant, installez en utilisant la commande que vous venez d'essayer, en utilisant checkinstall au lieu de cela, il est plus facile de désinstaller si nécessaire:

./configure
make
sudo checkinstall

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


184
2018-02-05 12:20



Utilisation sudo make install et pas altinstall pour le définir comme version par défaut de python - Shagun Sodhani
utilisation CXX=g++ ./configure si ./configure émet un avertissement indiquant que g ++ n'a pas été trouvé - srj
Après l'installation comme indiqué ci-dessus, quelles commandes dois-je exécuter dans la console pour vérifier qu'elle est bien installée? - Ciwan
C'est tout à fait extraordinaire que la meilleure réponse à la simple question "comment installer Python" porterait un si terrible avertissement, c'est comme "c'est la meilleure façon de savoir installer Python et cela pourrait très bien casser votre système" ... Il est très surprenant que le site Web officiel de Python soit rempli de téléchargements et non d’une seule page d’instructions d’installation. - patb
pat - la meilleure réponse à la simple question "comment installer python" est sudo apt-get install python, la réponse plus compliquée est "comment installer le dernier python ", l'implication étant" de la source ". Vous aurez le même problème sur n'importe quel système d'exploitation, sauf si vous installez des fichiers binaires précompilés provenant d'une tierce partie, ce qui est risqué sur tous les systèmes d'exploitation. Aussi cette réponse date de 2012, pour des conseils plus récents, voir askubuntu.com/questions/101591/… - michael


À moins que vous ayez vraiment envie de le compiler vous-même, la méthode préférée consiste à utiliser le DeadSnakes PPA installer des 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

Autres versions, telles que python2.4 ou python3.6, etc. sont également disponibles.


159
2018-02-05 14:40



Note sur le programme: Si vous êtes sur 10.04, vous devrez peut-être installer les propriétés de python-software avant d'utiliser add-apt-repository. - Craig Maloney
Il est recommandé de construire python dans votre environnement local, au lieu de l'installer à partir de fichiers binaires de pré-construction - pylover
+1 :) really have a burning desire to compile it yourself - Watt
Manqué de mentionner que: 1. le ppa n'est pas officiellement approuvé, le moyen le plus sûr est donc de créer à partir des sources. 2. cela se traduira par un python global, ce nonsudoLes utilisateurs ne peuvent pas modifier ou installer des packages, pas un package local. 3. Plusieurs pythons peuvent être installés localement à différents endroits en construisant à partir de la source. - Ioannis Filippidis
apt-get install python2.7Cela installe le binaire python2.7 au lieu de python ... moche !! - Dhawal


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

$ 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 (merci de noter exactement ce que font ces commandes; je suppose une nouvelle installation ici.)

Installer 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 un ordinateur portable jupyter, ou le dernier scipy ou numpy (etc), vous voudrez installer pip et alors pip install ceux qui se tournent encore vers apt-get installer tout nécessaire système dépendances, comme graphviz ou librairies système.

$ 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, encore une fois, 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 des deux python-pip pour le Python 2.7 pip et le python3-pip pour le Python 3 pip. L'installation via apt-get est sûr 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...

Une chose intéressante se produit à la suite de cela: vous avez maintenant le "standard" (et 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 l'installation 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 Python PyPI préférés: vous devrez probablement mettre à jour pip lui-même (à la fois pip2 et pip3, séparément, peu importe si pip est invoqué via le python les exécutables ou le pip exécutables, 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 soit le stand-alone pip ou la version intégrée dans python (via python -m pip {command}).


[1] Récapitulatif historique: Ubuntu plus ancien n'avait que Python 2.6, donc toutes les différentes méthodes pour installer Python 2.7+. Plus tard, après avoir ajouté Python 2.7 aux référentiels publics, nous avions toujours le même défi pour installer le dernier Python 2.7 avec les derniers correctifs, ce qui était (trop) souvent nécessaire. La situation actuelle est bien meilleure / plus simple: les Python 2.7 et 3.5 actuels (essentiellement les deux seules versions de la plate-forme Python qui intéressent les gens) qui sont dans les dépôts publics sont très stables. python modules, pas le dernier python. Alors maintenant, le "dernier problème de version" de Python a été déplacé partiellement hors des pensions et des OS apt et dans PyPI & pip.)


24
2017-09-29 08:50



En suivant ces instructions sur Ubuntu 16.04.1 LTS, configurez avec succès python 2.7 et pip comme ceci: sudo apt-get install python2.7; sudo apt-get installe python-pip; sudo -H python2 -m pip install --upgrade pip; # Vérification de la version: $ pip --version -> pip 9.0.1 de /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12 - Robert Lujo
Réponse vraiment utile - merci beaucoup! - Failed Scientist
Pardonnez mon ignorance mais puis-je savoir ce que signifie "hashed" lors de l'affichage des versions de Python? - Failed Scientist
@TalhaIrfan C'est une bonne question (et si vous permettez une réponse simplifiée): quand une commande est tapée en bash (comme avec la plupart des shells), le cmd peut être un alias, une fonction ou un fichier exécutable trouvé dans $PATH. L'env var PATH est une longue liste de répertoires contenant littéralement des milliers de fichiers. Pour accélérer la recherche de l'exécutable, le shell utilise une table de hachage mise en cache pour une recherche rapide. Il peut devenir obsolète, donc "hashed" vous permet de savoir qu'il est "mémorisé" cette commande mappée à ce fichier exécutable unix.stackexchange.com/questions/5609/… - michael
@gaia vous voudrez peut-être poser une question distincte, car des allers-retours supplémentaires peuvent être nécessaires pour le comprendre (ou si quelque chose a changé depuis que je l'ai écrit). Peut-être, d'abord vérifier que tous les deux  pip (2.7) & pip3 (3.x) ont été complètement installés / mis à niveau, et pas seulement les premiers - à savoir, sudo apt-get install python-pip python3-pip et sudo -H python2 -m pip install --upgrade pip et sudo -H python3 -m pip install --upgrade pip  ... Ou si c'est vraiment un problème de permission (indiqué par "ça marche avec sudo"), alors ça va être un peu plus difficile à retrouver. - michael


12.04

Si vous suivez La réponse d'Achu, alors le terme libread5-dev devrait être changé pour 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
2017-07-26 14:37





Vous pouvez également télécharger et 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

2
2018-03-30 07:38



C'est la méthode la plus propre pour obtenir une version à jour de Python sur une ancienne version d'Ubuntu. Il inclut également le support virtualenv, via le pyenv-virtualenv plug-in, ce qui facilite l'installation d'applications avec différents besoins de module sans heurts. - RichVel
Deux avertissements à propos de pyenv: (1) il ne fonctionne que depuis un shell bash (ou peut-être zsh, mais certainement pas dash qui est / bin / sh sur Ubuntu), et (2) il nécessite un shell de connexion (par ex. bash --login), ce qui n'est pas toujours facile à réaliser, par ex. de Ansible. Idéal pour une utilisation interactive, moins bon pour les serveurs de script. - RichVel