142 votes

Plusieurs versions de Python sur la même machine ?

Y a-t-il une documentation officielle quelque part sur le site web de Python, sur la façon d'installer et d'exécuter plusieurs versions de Python sur la même machine sous Linux ?

Je peux trouver des milliards d'articles de blog et de réponses, mais je voudrais savoir s'il existe une manière officielle "standard" de procéder ?

Ou est-ce que tout cela dépend du système d'exploitation ?

108voto

Felix Kling Points 247451

Je pense que c'est totalement indépendant. Il suffit de les installer, puis vous avez les commandes par exemple. /usr/bin/python2.5 y /usr/bin/python2.6 . Lien /usr/bin/python à celui que vous voulez utiliser par défaut.

De toute façon, toutes les bibliothèques sont dans des dossiers séparés (nommés d'après la version).

Si vous voulez compiler les versions manuellement, cela provient du fichier readme du code source de Python :

Installation de plusieurs versions

Sur les systèmes Unix et Mac si vous avez l'intention d'installer plusieurs versions de Python en utilisant le même préfixe d'installation (argument --prefix de la commande configure script), vous devez faire attention à ce que votre exécutable python principal ne soit pas écrasé par l'installation d'une version différente. Tous les fichiers et répertoires installés à l'aide de "make altinstall" contiennent la version majeure et mineure et peuvent donc vivre côte à côte. "make install" crée également ${prefix}/bin/python3 qui fait référence à ${prefix}/bin/pythonX.Y. Si vous avez l'intention de d'installer plusieurs versions en utilisant le même préfixe, vous devez décider quelle version (le cas échéant) est votre version " principale ". Installez cette version en utilisant "make install". Installez toutes les autres versions en utilisant "make altinstall".

Par exemple, si vous souhaitez installer Python 2.5, 2.6 et 3.0, la version 2.6 étant la version 2.6. 2.6 étant la version principale, vous exécuterez "make install" dans votre répertoire de construction 2.6 et "make altinstall" dans les autres.

37voto

leOm Points 20

Mise à jour 2019 : Utilisation asdf

De nos jours, je suggère d'utiliser asdf pour installer différentes versions d'interpréteurs Python les unes à côté des autres.

Note1 : asdf ne fonctionne pas seulement pour Python mais pour tous les langages majeurs.

Note2 : asdf fonctionne très bien en combinaison avec des gestionnaires de paquets populaires tels que pipenv y poésie .

Si vous avez asdf installé vous pouvez facilement télécharger/installer de nouveaux interprètes Python :

# Install Python plugin for asdf:
asdf plugin-add python

# List all available Python interpreters:
asdf list-all python

# Install the Python interpreters that you need:
asdf install python 3.7.4
asdf install python 3.6.9
# etc...

# If you want to define the global version:
asdf global python 3.7.4

# If you want to define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
asdf local python 3.7.4

Vieille réponse : Installer Python à partir des sources

Si vous avez besoin d'installer plusieurs versions de Python (à côté de la principale) sur Ubuntu / Mint : (devrait fonctionner de manière similaire sur d'autres Unix'.)

1) Installer les paquets requis pour la compilation des sources

$ 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

2) Téléchargez et extrayez la version de Python souhaitée.

Télécharger Python Source pour Linux en tant qu'archive et déplacez-la vers /usr/src .

Extrayez le paquet téléchargé sur place. (remplacez les 'x' par votre version téléchargée)

$ sudo tar xzf Python-x.x.x.tgz

3) Compiler et installer le source Python

$ cd Python-x.x.x
$ sudo ./configure
$ sudo make altinstall

Votre nouveau bin Python est maintenant situé dans /usr/local/bin . Vous pouvez tester la nouvelle version :

$ pythonX.X -V
Python x.x.x
$ which pythonX.X
/usr/local/bin/pythonX.X

# Pip is now available for this version as well:
$ pipX.X -V
pip X.X.X from /usr/local/lib/pythonX.X/site-packages (python X.X)

32voto

Sous Windows, ils sont installés dans des dossiers séparés, " C:\python26 " et " C:\python31 ", mais les exécutables ont le même nom "python.exe".

J'ai créé un autre " C:\python "qui contient "python.bat" et "python3.bat" qui servent de wrappers à "python26" et "python31" respectivement, et ajouté " C:\python " à la PATH variable d'environnement.

Cela me permet de taper python o python3 dans mes wrappers Python .bat pour lancer celui que je désire.

Sous Linux, vous pouvez utiliser l'option #! pour spécifier quelle version vous voulez qu'un script utilise.

20voto

KingKohn Points 93

J'utilise un Mac et la meilleure façon qui a fonctionné pour moi est d'utiliser pyenv !

Les commandes ci-dessous sont pour Mac mais assez similaires à celles de Linux (voir les liens ci-dessous)

#Install pyenv
brew update
brew install pyenv

Disons que vous avez python 3.6 comme version principale sur votre Mac :

python --version 

Sortie :

Python <your current version>

Maintenant, installez python 3.7, en listant d'abord tous les éléments suivants

pyenv install -l

Prenons 3.7.3 :

pyenv install 3.7.3

Assurez-vous de l'exécuter dans le Terminal (ajoutez-le à ~/.bashrc ou ~/.zshrc) :

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

Maintenant, nous allons l'exécuter seulement sur les ouvert terminal/shell :

pyenv shell 3.7.3

Exécutez maintenant

python --version

Sortie :

Python 3.7.3

Et pas moins important non activé dans le shell/iTerm ouvert :

pyenv shell --unset

Vous pouvez l'exécuter à l'échelle mondiale o localement également

11voto

blue-cat Points 41

Gestionnaires de paquets - niveau utilisateur

Pour un gestionnaire de paquets capable d'installer et de gérer plusieurs versions de python, ce sont de bons choix :

  • pyenv - seulement capable d'installer et de gérer les versions de python
  • asdf - capable d'installer et de gérer de nombreuses langues différentes

L'avantage de ces gestionnaires de paquets est qu'il peut être plus facile de les configurer et d'installer plusieurs versions de python avec eux que d'installer python à partir des sources. Ils fournissent également des commandes permettant de changer facilement la ou les versions de python disponibles à l'aide de shims et de définir la version de python par répertoire.

Cet inconvénient est que, par défaut, ils sont installés au niveau de l'utilisateur (à l'intérieur de votre répertoire personnel) et nécessitent un peu de configuration au niveau de l'utilisateur - vous devrez modifier votre ~/.profile y ~/.bashrc ou des fichiers similaires. Cela signifie qu'il n'est pas facile de les utiliser pour installer plusieurs versions de python de manière globale pour tous les utilisateurs. Pour ce faire, vous pouvez procéder à une installation à partir des sources, parallèlement à la version python existante du système d'exploitation.


Installation à partir de la source - à l'échelle du système

Vous aurez besoin des privilèges de Root pour cette méthode.

Voir le documentation officielle de python pour la construction à partir des sources pour des considérations et des options supplémentaires.

/usr/local est l'emplacement désigné par l'administrateur système pour installer des logiciels partagés (à l'échelle du système). Ses sous-répertoires sont donc un bon endroit pour télécharger les sources de python et les installer. Voir section 4.9 de la norme sur la hiérarchie des fichiers de la Fondation Linux. .

Installez toutes les dépendances de construction. Sur les systèmes basés sur Debian, utilisez :

apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev

Choisissez la version de python que vous souhaitez installer. Voir le Communiqués de presse sur les sources Python pour obtenir une liste.

Téléchargez et décompressez le fichier dans /usr/local/src en remplaçant X.X.X ci-dessous avec la version de python (i.e. 3.8.2 ).

cd /usr/local/src
wget https://www.python.org/ftp/python/X.X.X/Python-X.X.X.tgz
tar vzxf Python-X.X.X.tgz

Avant de construire et d'installer, réglez le CFLAGS avec les drapeaux du compilateur C nécessaires (voir le document GNU's make documentation ). Cela n'est généralement pas nécessaire pour une utilisation générale, mais si, par exemple, vous aviez l'intention de créer un plugin uWSGI avec cette version de python, vous pourriez vouloir définir les drapeaux, -fPIC avec les éléments suivants :

export CFLAGS='-fPIC'

Changez le répertoire de travail pour le répertoire source dézippé de python, et configurez la construction. Vous voudrez probablement utiliser l'option --enable-optimizations sur l'option ./configure pour optimisation guidée par le profil . Utilisez --prefix=/usr/local pour installer dans les sous-répertoires appropriés ( /usr/local/bin , /usr/local/lib etc.).

cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local

Construire le projet avec make et l'installer avec make altinstall pour éviter de remplacer des fichiers lors de l'installation de plusieurs versions. Voir l'avertissement sur cette page de la documentation sur la construction de python.

make -j 4
make altinstall

Ensuite, vous devriez pouvoir exécuter vos nouvelles versions de python et pip avec pythonX.X y pipX.X (c'est-à-dire python3.8 y pip3.8 ). Notez que si la version mineure de votre nouvelle installation est la même que celle du système d'exploitation (par exemple, si vous installez python3.8.4 et que le système d'exploitation utilise python3.8.2), vous devrez spécifier le chemin d'accès complet ( /usr/local/bin/pythonX.X ) ou définissez un alias pour utiliser cette version.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X