Comment exécuter plusieurs versions de Python sur Windows

170

J'avais deux versions de Python installées sur ma machine (versions 2.6 et 2.5). Je veux exécuter 2.6 pour un projet et 2.5 pour un autre.

Comment puis-je spécifier ce que je souhaite utiliser?

Je travaille sur Windows XP SP2.

Bilal Basharat
la source
3
Les bons conseils pour poser des questions sont d'expliquer ce que vous avez essayé et en quoi cela a échoué. Alors: qu'avez-vous essayé et en quoi cela n'a-t-il pas fonctionné?
Lennart Regebro
Notez que je n'ai pas trouvé de questions précédentes à ce sujet sur Windows, j'ai donc changé le titre pour refléter cela.
Lennart Regebro
Si vous voulez exécuter 3.3 avec 2.7 alors c'est la réponse la plus standardisée : - stackoverflow.com/questions/15912063/…
Omar Tariq

Réponses:

135

Exécuter une copie différente de Python est aussi simple que de démarrer le bon exécutable. Vous mentionnez que vous avez démarré une instance python, à partir de la ligne de commande, en tapant simplement python.

Ce que cela fait sous Windows, c'est de parcourir la %PATH%variable d'environnement, en recherchant un exécutable, soit un fichier batch ( .bat), un fichier de commandes ( .cmd) ou un autre exécutable à exécuter (ceci est contrôlé par la PATHEXTvariable d'environnement), qui correspond au nom donné. Lorsqu'il trouve le fichier correct à exécuter, le fichier est en cours d'exécution.

Maintenant, si vous avez installé deux versions de python 2.5 et 2.6, le chemin contiendra leurs deux répertoires, quelque chose comme, PATH=c:\python\2.5;c:\python\2.6mais Windows arrêtera d'examiner le chemin lorsqu'il trouve une correspondance.

Ce que vous devez vraiment faire est d'appeler explicitement une ou les deux applications, telles que c:\python\2.5\python.exeou c:\python\2.6\python.exe.

L'autre alternative est de créer un raccourci vers l' python.exeappelant respectif de l'un d'eux python25et de l'autre python26; vous pouvez alors simplement exécuter python25sur votre ligne de commande.

aodj
la source
41
comment créer ce raccourci
Bilal Basharat
8
Lorsque vous êtes dans Windows, accédez au dossier qui contient la version de Python pour laquelle vous souhaitez créer un raccourci, puis cliquez avec le bouton droit et créez un raccourci. Vous pouvez ensuite le renommer.
aodj
3
Désolé de déterrer un article mort depuis longtemps, mais comment allez-vous faire fonctionner le raccourci sans avoir besoin de l'extension .lnk?
Nathan Tornquist
7
Si un raccourci ne fonctionne pas, vous pouvez faire comme @FJ l'a dit, et simplement copier et renommer. A défaut, vous pouvez créer un lien symbolique, en utilisant «mklink» sur la ligne de commande.
aodj
7
Le meilleur moyen ne serait-il pas de créer un fichier chauve-souris appelé python25 et python26 et de faire appeler la version appropriée? Ensuite, tout ce que vous avez à faire est de mettre ces 2 fichiers bat à côté de leurs binaires.
Jeremy Cantrell
100

Ajout de deux autres solutions au problème:

  • Utilisez pylauncher (si vous avez Python 3.3 ou plus récent, il n'est pas nécessaire de l'installer car il est déjà fourni avec Python) et ajoutez des lignes shebang à vos scripts;

#! c:\[path to Python 2.5]\python.exe- pour les scripts que vous souhaitez exécuter avec Python 2.5
#! c:\[path to Python 2.6]\python.exe- pour les scripts que vous souhaitez exécuter avec Python 2.6

ou au lieu d'exécuter la pythoncommande, exécutez la commande pylauncher command ( py) en spécifiant la version de Python souhaitée;

py -2.6- version 2.6
py -2- dernière version installée 2.x
py -3.4- version 3.4
py -3- dernière version installée 3.x

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

par exemple

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

alors vous pouvez activer le premier et travailler avec Python 2.5 comme ça
c:\venvs\2.5\activate
et quand vous voulez passer à Python 2.6 vous faites

deactivate  
c:\venvs\2.6\activate
Piotr Dobrogost
la source
pylauncher semble être une implémentation prototype de PEP 397 qui a été acceptée comme Standards Track en 2011. Savez-vous pourquoi le lanceur n'est toujours pas distribué avec Python pour Windows ou pourquoi il n'y a toujours que l'implémentation prototype de Vinay Sajip?
martineau
4
Pylauncher est distribué avec Python à partir de la version 3.3 - voir python.org/download/releases/3.3.0 . Je pense également que l'implémentation de Vinay Sajip n'est pas simplement un prototype.
Piotr Dobrogost
1
Merci pour la clarification. IMHO pylauncher devrait également être distribué dans le cadre de la dernière version de Python 2, car les personnes qui utilisent cette version sont plus susceptibles que celles qui souhaitent installer plusieurs versions (et seront plus susceptibles de le faire si elles étaient conscientes de ses fonctionnalités et de sa disponibilité).
martineau
StackOverflow devrait autoriser plusieurs votes positifs, votre réponse mérite des votes positifs infinis! Sérieusement, où étiez-vous frère! : D Simple, clair et fonctionnel bien sûr!
3bdalla
Très bonnes suggestions. J'ai utilisé le deuxième (virtualenv). La seule différence que j'ai trouvé que je devais inclure « \ scripts » dans le chemin d'accès Activate, par exemple: c:\venvs\2.5\scripts\activate. C'est sur Windows 10 si cela fait une différence. Autre que cela, fonctionne comme un charme, merci.
Dave Marley
53

À partir de Python 3.3, il y a le lanceur officiel Python pour Windows ( http://www.python.org/dev/peps/pep-0397/ ). Maintenant, vous pouvez utiliser #!pythonXpour déterminer la version souhaitée de l'interpréteur également sous Windows. Voir plus de détails dans mon autre commentaire ou lire la PEP 397.

Résumé: Les py script.pylancements de la version Python indiqué dans #!ou Python 2 #!s'il manque. Le py -3 script.pylance le Python 3.

pepr
la source
1
C'est la réponse que je recherche. J'exécute Windows 10 avec Python 2.7 et Python 3.4.3. Dans l'invite de commande, tapez "py [numéro_version_python]" ex: py -3 ou py invoquera la version de python que vous avez. Je pense que les variables d'environnement doivent être définies avant de l'utiliser. cela me convient.
CodeMonkey
2
@Inuka: Aucune variable d'environnement n'a besoin d'être définie. Le programme d'installation Python définit les associations avec l' .pyextension. Le lanceur lui-même est installé dans C:\Windowscelui qui est déjà dans le PATH. De cette façon, la PATHvariable n'a pas non plus besoin d'être modifiée.
pepr
2
Merci beaucoup pour votre compagnon de réponse. De cette façon, nous pouvons également invoquer le pip. py -2 -m pip installer SomePackage ou py -3.4.3 -m pip installer SomePackage
CodeMonkey
Je pense que c'est la solution la plus simple et la plus simple.
prasad
46

Selon @alexander, vous pouvez créer un ensemble de liens symboliques comme ci-dessous. Placez-les quelque part qui est inclus dans votre chemin afin qu'ils puissent être facilement invoqués

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe

Tant que c: \ bin ou l'endroit où vous les avez placés se trouve sur votre chemin, vous pouvez maintenant aller

> python25
Christopher Hackett
la source
4
Idée brillante. BTW mklinkest uniquement disponible nativement dans Windows Vista / 2008 +. Sur XP et Server 2003, un "hardlink" pourrait être créé à la place en utilisant fsutil hardlink create <new filename> <existing filename>et en plaçant ou en déplaçant le <nouveau nom de fichier> quelque part dans votre chemin. Cependant, les liens physiques ne fonctionnent que sur le même lecteur.
martineau
C'est une bonne solution, je ne suis pas sûr que cela fonctionne sans un système de fichiers basé sur NTFS.
meawoppl
Oui, nécessite la prise en charge des liens symboliques NTFS qui, je crois, ont été introduits dans Vista (je me trompe peut-être). L'utilisation sur XP nécessite l'utilisation d'un pilote différent . On dirait qu'il a été désactivé à un moment donné avant la sortie générale.
Christopher Hackett
Meilleure solution la plus simple
giantas
15
  1. installer python

    • C: \ Python27
    • C: \ Python36
  2. variable d'environnement

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. renommer le fichier

    • C: \ Python27 \ python.exe → C: \ Python27 \ python2.exe
    • C: \ Python36 \ python.exe → C: \ Python36 \ python3.exe
  4. pépin

    • python2 -m pip install package
    • python3 -m pip install package
山 茶树 和 葡萄 树
la source
Je pense que c'est plus ou moins la solution pratique à la question. C'est plus pratique par rapport à l'approche où un raccourci / lien symbolique est utilisé pour appeler le script python. Au lieu de renommer le fichier, nous pouvons copier et coller le binaire (python.exe) puis le renommer en fonction de sa version (comme indiqué dans cette réponse). Au fait, la pythoncommande serait déroutante pour le système d'exploitation.
testuser
Très bonne réponse! Merci ~ @ 山 茶树 和 葡萄 树
Bright Chang
14

Par exemple pour le type de version 3.6 py -3.6. Si vous avez également des versions 32 bits et 64 bits, vous pouvez simplement taper py -3.6-64ou py -3.6-32.

Mehran Jalili
la source
3
Cela devrait être la réponse acceptée! Merci beaucoup!
Xonshiz
3
C'est peut-être la meilleure réponse, car elle ne nécessite aucun changement de nom des fichiers et les IDE tiers détecteront les deux comme d'habitude!
Enchant97
pourriez-vous améliorer la réponse avec plus d'explications - où est cet pyexécutable - est-ce un ajout pour Windows uniquement? Est-il possible de l'intégrer dans un script de ligne de commande multiplateforme qui a en haut: #!/usr/bin/env python3par exemple?
Ed Randall
7

Lorsque vous installez Python, il n'écrasera pas les autres installations d'autres versions majeures. Ainsi, l'installation de Python 2.5.x n'écrasera pas Python 2.6.x, bien que l'installation de 2.6.6 écrasera 2.6.5.

Vous pouvez donc simplement l'installer. Ensuite, vous appelez la version Python souhaitée. Par exemple:

C:\Python2.5\Python.exe

pour Python 2.5 sous windows et

C:\Python2.6\Python.exe

pour Python 2.6 sous Windows, ou

/usr/local/bin/python-2.5

ou

/usr/local/bin/python-2.6

sous Windows Unix (y compris Linux et OS X).

Lorsque vous installez sur Unix (y compris Linux et OS X), vous obtiendrez une pythoncommande générique installée, qui sera la dernière que vous avez installée. Ce n'est généralement pas un problème car la plupart des scripts appelleront explicitement /usr/local/bin/python2.5 ou quelque chose juste pour se protéger contre cela. Mais si vous ne voulez pas faire cela, et vous ne le faites probablement pas, vous pouvez l'installer comme ceci:

./configure
make
sudo make altinstall

Notez le "altinstall" qui signifie qu'il va l'installer, mais il ne remplacera pas la pythoncommande.

Sur Windows, vous n'obtenez pas de pythoncommande globale pour autant que je sache, donc ce n'est pas un problème.

Lennart Regebro
la source
merci pour votre aide plz répondre également à ma deuxième question: comment puis-je exécuter les deux à la fois? comme je suis passé avec succès de 2,5 à 2,6
Bilal Basharat
@Bilal Basharat: Windows est un système d'exploitation multi-tâches si vous voulez exécuter deux choses en même temps, vous commencez simplement les deux, donc je ne comprends pas votre question.
Lennart Regebro
actuellement je travaille sur python2.5. expliquez-moi simplement comment puis-je exécuter 2.6 également? lorsque j'écris «python» dans l'invite de commande Windows pour entrer dans le shell python, python2.5 apparaît. dans le lecteur c, j'avais les deux versions installées. quand je vais à C: \ Python2.6 \ Python.exe. que python2.6 temporairement activé. dès que je quitte C: \ Python2.6 \ il est de nouveau devenu la version 2.5
Bilal Basharat
3
@Bilal Basharat: J'ai déjà répondu à cela. Il n'est pas "temporairement activé". Vous avez exécuté Python 2.6 avec la commande C: \ Python2.6 \ Python.exe et c'est ainsi que vous l'exécutez. Et vous exécutez Python 2.5 avec la commande C: \ Python2.5 \ Python.exe. C'est ainsi que vous exécutez les deux en même temps.
Lennart Regebro
1
@Bilal Basharat: Si le répertoire C:\Python2.5ou C:\Python2.6apparaît dans votre PATHvariable d'environnement, la version correspondante de Python deviendra la version par défaut sauf si vous la remplacez en spécifiant explicitement un chemin différent vers le .exe que vous souhaitez utiliser.
martineau
7

Je recommande fortement le projet pyenv-win .

entrez la description de l'image ici

Grâce au travail de kirankotari , nous avons maintenant une version Windows de pyenv.

Xin Lv
la source
5

Voici un hack rapide:

  1. Accédez au répertoire de la version de python que vous souhaitez exécuter
  2. Faites un clic droit sur python.exe
  3. Sélectionnez " Créer un raccourci "
  4. Donnez à ce raccourci un nom pour appeler (j'utilise p27, p33 etc.)
  5. Déplacez ce raccourci vers votre répertoire personnel ( C:\Users\Your name)
  6. Ouvrez une invite de commande et entrez name_of_your_shortcut.lnk(j'utilise p27.lnk)
David Greydanus
la source
1

cp c: \ python27 \ bin \ python.exe comme python2.7.exe

cp c: \ python34 \ bin \ python.exe comme python3.4.exe

ils sont tous dans le chemin du système, choisissez la version que vous souhaitez exécuter

C:\Users\username>python2.7
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users\username>python3.4
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Bruceyang
la source
cela a fonctionné pour moi. Il suffit d'utiliser copie au lieu de cp. De plus, lors de l'exécution de cette commande, vous devez être quelque part sur le chemin et les deux installations python, par exemple c: \ python34 \ bin \ python.exe et c: \ python27 \ bin \ python.exe doivent également être dans le chemin. (de préférence dans cet ordre).
Gregor Schmitz
1

Utilisation d'un fichier batch pour basculer, facile et efficace sous Windows 7. J'utilise ceci:

Dans la boîte de dialogue des variables d'environnement (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe),

Dans la section Variables utilisateur

  1. ajouté% pathpython% à la variable d'environnement path

  2. supprimé toutes les références aux chemins python

Dans la section Variables système

  1. supprimé toutes les références aux chemins python

J'ai créé des fichiers batch pour chaque installation python (exemple pour 3.4 x64

Nom = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) juste pour se souvenir.

Contenu du fichier =

     Set PathPython=C:\Python36AMD64\Scripts\;C:\Python36AMD64\;C:\Tcl\bin

     setx PathPython %PathPython%

Pour basculer entre les versions, j'exécute le fichier batch en mode administrateur.

!!!!! Les modifications sont effectives pour les fenêtres d'invite de commande SUIVANTES OUVERTES. !!!

Donc, j'ai un contrôle exact là-dessus.

Un homme
la source
0

Le moyen le plus simple d'exécuter plusieurs versions de python sur Windows est décrit ci-dessous comme suit: -

1) Téléchargez les dernières versions de python sur python.org/downloads en sélectionnant la version appropriée pour votre système.

2) Exécutez le programme d'installation et sélectionnez Ajouter python 3.x au chemin pour définir le chemin automatiquement dans python 3 (il vous suffit de cocher la case). Pour python 2, ouvrez votre programme d'installation de python 2, sélectionnez les préférences de votre choix, mais n'oubliez pas de définir Ajouter python.exe au chemin à Sera installé sur le disque dur local , cliquez simplement sur Suivant et attendez que le programme d'installation se termine.

3) Lorsque les deux installations sont terminées. Faites un clic droit sur mon ordinateur - Aller aux propriétés - Sélectionnez Paramètres système avancés - Aller aux variables d'environnement - Cliquez sur nouveau sous Variables système et ajouter une nouvelle variable système avec nom de variable comme PY_PYTHON et définissez cette valeur de la variable à 3 . Cliquez maintenant sur OK et vous devriez avoir terminé.

4) Maintenant, pour tester cela, ouvrez l' invite de commande . Une fois que vous y êtes, tapez python ou py , cela devrait ouvrir python3 .

5) Quittez maintenant python3 en tapant exit () . Maintenant, tapez py -2, cela devrait ouvrir python 2.

Si rien de tout cela ne fonctionne, redémarrez l'ordinateur et si le problème persiste, désinstallez tout et répétez les étapes.

Merci.

Harsh Singh
la source
0

Vous pouvez créer graphiquement différents environnements de développement python à partir d'Anaconda Navigator. J'ai eu le même problème en travaillant avec différentes versions de python, j'ai donc utilisé le navigateur anaconda pour créer différents environnements de développement python et utilisé différentes versions de python dans chaque environnement.

Voici la documentation d'aide pour cela.

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

mohitesachin217
la source
-1

En utilisant Rapid Environment Editor, vous pouvez pousser vers le haut le répertoire de l'installation Python souhaitée. Par exemple, pour démarrer python à partir du répertoire c: \ Python27, assurez-vous que le répertoire c: \ Python27 se trouve avant ou au-dessus du répertoire c: \ Python36 dans la variable d'environnement Path. D'après mon expérience, le premier exécutable python trouvé dans l'environnement Path est en cours d'exécution. Par exemple, MSYS2 est installé avec Python27 et depuis que j'ai ajouté C: \ MSYS2 au chemin avant C: \ Python36, le python.exe du dossier C: \ MSYS2 .... est en cours d'exécution.

Bogdan Oliver Stochin
la source
-4

Appelez simplement le bon exécutable

Albertov
la source
actuellement je travaille sur 2.5. expliquez-moi simplement comment puis-je exécuter 2.6 également. dans l'invite de commande Windows, j'ai dû écrire «python» pour entrer dans le shell python. et c'est 2,5. dans le lecteur c, j'avais les deux versions installées.
Bilal Basharat
Au lieu d' pythonentrer dans le shell, essayez python2.5ou python2.6. Je ne suis pas un utilisateur de Windows, mais sur unix / usr / bin / python est généralement un alias de l'exécutable pleinement qualifié, je suppose que python dans Windows est installé de la même manière
albertov
1
Sous Windows, le nom de l'exécutable est toujours python.exe, mais vous modifiez le chemin d'accès à l'exécutable. Cela a déjà été expliqué à plusieurs reprises.
jgritty