Comment installer la dernière version 2.7.X ou 3.X de Python sur Ubuntu?

183

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?

les mohammads
la source
1
À un moment donné, j’imagine que cela a été demandé afin d’installer une version plus récente de python sur Ubuntu. Maintenant, il est nécessaire d'installer une version plus ancienne de python sur Ubuntu (car nous avons toujours besoin de python 2.7 pour beaucoup de choses) ... tl; dr: cette réponse n'est plus actuelle / correcte. Au lieu de cela, en supposant que python3 est installé par défaut (et peut-être un minimum, python2.x), exécutez:sudo apt-get install python-2.7 python-pip
michael
@michael_n de quoi parlez-vous? compiler à partir des sources ne rend pas cette réponse incorrecte ou obsolète. c'est juste une méthode différente. vous pouvez utiliser apt pour automatiser le processus si nécessaire.
vous utilisez ce dont vous avez besoin. Je ne vois pas vraiment en quoi cela corrobore votre affirmation selon laquelle il est obsolète. comme vous l'avez dit vous-même, vous l'utilisez quand vous en avez besoin car il se peut qu'il ne soit pas disponible Par exemple, le sous-système Windows pour Linux utilise des progiciels obsolètes, même si la distribution est Ubuntu 16.04.1 (beta) et utilise python2.6.2, et python3, même si la version actuelle est python2.7.12. Dans ce cas, je devrais compiler si je veux des paquets mis à jour
1
@jargonjunkie vous êtes hors sujet, mais correct. Si la question est "comment puis-je installer python 2.7 sur Ubuntu 16.04+" qu'il soit (car 16.04 est maintenant disponible, ce qui est mon propos), alors vous simplement sudo apt-get install python2.7. C'est non seulement plus facile, mais aussi la seule réponse correcte, car c'est la seule façon de gérer l'installation de modules Python via apt-get et leurs dépendances.
Michael
espérons que cela aide à illustrer (réponse ajoutée). l'écosystème de python est très particulier / difficile, et vous pouvez facilement entrer dans "l'enfer de la dépendance" si vous ne construisez pas soigneusement votre environnement de python askubuntu.com/a/831075/17060
michael

Réponses:

199

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

Maintenant, installez en utilisant la commande que vous venez d'essayer, utilisez checkinstallplutôt pour faciliter la désinstallation si nécessaire:

./configure
make
sudo checkinstall

Changer versionde quelle que soit la version dont vous avez besoin ( version=2.7.1ou version=3.6.0, par exemple).

Achu
la source
20
Utilisez sudo make installet ne altinstallpas le définir comme version python par défaut
Shagun Sodhani
utiliser CXX=g++ ./configuresi ./configure émet un avertissement disant que g ++ n'a pas été trouvé
srj
2
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?
J86
9
C'est tout à fait extraordinaire que la meilleure réponse à la simple question "comment installer Python" porte un tel avertissement, c'est comme "c'est la meilleure façon dont nous connaissons installer Python et cela pourrait très bien endommager votre système" ... C'est aussi très surprenant que le site officiel de Python ait des charges de téléchargements et pas une seule page d’instructions d’installation.
mardi
4
pat - la meilleure réponse à la simple question "comment installer python" est sudo apt-get install pythonla plus compliquée est "comment installer le dernier python", l'implication étant "à partir du 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 à partir d’une tierce partie, ce qui, encore une fois, présente des risques pour tout système d’exploitation (et varie considérablement d’un système à l’autre). Aussi cette réponse est de 2012; pour obtenir des conseils plus récents, consultez le site askubuntu.com/questions/101591/…
michael,
181

À moins que vous ne désiriez vraiment le compiler vous-même, le moyen préféré consiste à utiliser le PPA de DeadSnakes pour installer des versions de Python non 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.4ou python3.6, etc. sont également disponibles.

Brousch
la source
13
Note de programme: Si vous utilisez la version 10.04, vous devrez peut-être installer python-software-properties avant d'utiliser add-apt-repository.
Craig Maloney
3
Il est recommandé de compiler Python dans votre environnement local, au lieu de l'installer à partir de binaires pré-
compilés
16
+1 :)really have a burning desire to compile it yourself
Watt
5
A manqué de mentionner que: 1. le ppan'est pas officiellement approuvé, le moyen le plus sûr est donc de construire à partir de la source. 2. Cela donnera un python global, que les non sudo-utilisateurs ne peuvent pas modifier ou installer des paquetages, pas un local. 3. Plusieurs pythons peuvent être installés localement à différents endroits en construisant à partir des sources.
Ioannis Filippidis
2
apt-get install python2.7Ceci installe le binaire python2.7 au lieu de python ... moche !!
Dhawal
26

Continuant à documenter ceci pour les dernières versions d'Ubuntu 1 : pour le serveur Ubuntu 16.04.1, la version par défaut de Python est la version 3.5, et Python 2.7 n'est pas installé par défaut. Sur une nouvelle installation (notez qu'il n'y a même pas d' pythonexé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 upgradeet 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 un ordinateur portable jupyter, ou le dernier scipy ou numpy (etc.), vous voudrez installer pippuis pip installceux-ci, et toujours vous tourner vers apt-getpour installer les dépendances système nécessaires , 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, 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-pippour le Python 2.7 pipet le python3-pippour le Python 3 pip. L'installation via apt-getest sûre 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é) python2et 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 aller et commencer à installer tous vos modules PyPI python préféré: vous devrez probablement mettre à niveau pip lui - même ( à la fois PIP2 et PIP3, séparément, aussi, peu importe si pipest invoquée par les pythonexecutables ou pipexécutables, les mises à jour 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 pipla version autonome ou la version fournie avec python(via python -m pip {command}).


[1] Récapitulatif historique: les anciennes Ubuntu n’avaient que Python 2.6, donc toutes les méthodes permettant d’installer Python 2.7+. Plus tard, après l’ajout de Python 2.7 aux référentiels publics, nous avions toujours le même défi pour installer la dernière version de 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 Python 2.7 et 3.5 (essentiellement les deux seules versions de la plate-forme Python qui comptent pour nous) qui sont maintenant dans les pensions publiques sont très stables. modules python , pas le dernier python . Alors maintenant, le "dernier problème de version" de Python a été partiellement remplacé par les dépôts de système d’exploitation aptet vers PyPI & pip.)

Michael
la source
2
En suivant ces instructions sur Ubuntu 16.04.1, LTS a configuré avec succès python 2.7 et pip comme suit: sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip install --upgrade pip; # Vérification de la version: $ pip --version -> pip 9.0.1 à partir de /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12
Robert Lujo
Pardonnez mon ignorance, mais puis-je savoir ce que signifie "hashed" lors de l'affichage des versions Python?
Échec du scientifique
1
@TalhaIrfan C'est une bonne question (et, si vous permettez une réponse simplifiée): quand une commande est tapée dans bash (comme avec la plupart des shells), la cmd pourrait être un alias, une fonction ou un fichier exécutable trouvé dans le fichier $PATH. La variable env PATHest 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 en cache pour une recherche rapide. Cela pourrait devenir obsolète, alors "hashed" vous permet de savoir qu'il est "mémorisé" de cette commande mappée sur ce fichier exécutable unix.stackexchange.com/questions/5609/…
michael
@ Michael Merci beaucoup! C'est une réponse vraiment utile: bref et concis!
Échec du scientifique
1
@gaia, vous voudrez peut-être poser une question distincte, puisqu’il faudra peut-être plus d’allers et retours pour la comprendre (ou si quelque chose a changé depuis que j’ai écrit cela). Peut-être, vérifiez d’abord que les deux pip (2.7) et pip3(3.x) ont été complètement installés / mis à jour, et pas seulement les anciens - c’est-à-dire, sudo apt-get install python-pip python3-pipet sudo -H python2 -m pip install --upgrade pipet sudo -H python3 -m pip install --upgrade pip ... Ou s’il s’agit vraiment d’un problème de permission (indiqué par "ça marche avec sudo "), il sera alors un peu plus difficile à localiser.
michael
11

12.04

Si vous suivez la réponse de Achu , alors le terme libread5-devdevrait ê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
Ce mec
la source
4

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
Chuchoté
la source
C’est le moyen le plus propre d’obtenir une version vraiment à jour de Python sur une version plus ancienne d’Ubuntu. Il inclut également la prise en charge de virtualenv, via le pyenv-virtualenvplug - in, facilitant ainsi l’installation d’applications avec des exigences de module différentes sans conflit.
RichVel
2
Deux avertissements à propos de pyenv: (1) il ne fonctionne qu’à partir d’un shell bash (ou peut-être de zsh, mais certainement pas dash qui est / bin / sh sur Ubuntu), et (2) il nécessite un shell de connexion (par exemple bash --login), qui n’est pas toujours facile à réaliser, par exemple à partir de Ansible. Idéal pour une utilisation interactive, moins bon pour les serveurs de script.
RichVel
0

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 simplement en disant pyenv install 3.6.0. Tout fonctionne en tant qu'utilisateur, vous n'avez donc pas à vous soucier de modifier le Python utilisé par Ubuntu.

Contrairement à certaines options basées sur apt-repo (par exemple, deadsnakes), cela fonctionnera généralement le jour même d'une publication après une pyenv updatecar il n'est pas nécessaire d'attendre que quelqu'un d'autre la conditionne. Voir toutes les versions que vous pouvez installer avecpyenv 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, qui permet également de créer / installer des branches sources, ce qui vous permet d’installer tout ce que fait actuellement la version 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 du programme d’installation (installe pyenv et quelques très utiles plugins pyenv 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 les lignes init à votre ~/.profileou ~/.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 au 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, rien de plus! Mieux encore, non sudo, pour ou pipinstalle!

  1. Installez votre version Python préférée (cela téléchargera la source et la 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 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_projdéposez un .python-versionfichier dans votre dossier actuel et, chaque fois que vous appelez des utilitaires Python ou Python installés par pip, sous ou hors de celui-ci, ils seront compressé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 est manquant, assurez-vous de suivre N ° 3 ET N ° 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 des instructions sur l'ajout du plugin.
    2. Si vous avez utilisé le script d'installation, vérifiez s'il apparaît avec pyenv commands.
Nick T
la source