169 votes

Puis-je installer Python 3.x et 2.x sur le même ordinateur Windows ?

Je suis sous Windows et le shell/OS exécute automatiquement Python en fonction des paramètres du registre lorsque vous exécutez un programme en ligne de commande. Est-ce que cela se brisera si j'installe une version 2.x et 3.x de Python sur la même machine ?

Je veux jouer avec Python 3 tout en étant capable d'exécuter des scripts 2.x sur la même machine.

1 votes

Dans ma distribution, Fedora, Python 2.7 est installé à l'adresse suivante /usr/bin/python et Python 3.3 à /usr/bin/python3 . Donne également des noms différents pour Pip et IPython de Python3. Très pratique.

20 votes

@user - Dans l'esprit, je suis d'accord avec votre réponse, mais j'ai été brûlé par cet esprit tellement de fois que je comprends pourquoi quelqu'un demanderait avant de faire le saut.

0 votes

Les réponses semblent toutes porter sur la façon de choisir quel python exécuter et à quel moment. Mon problème était que l'installateur (3.6.2) ne voulait pas s'exécuter car il disait "Une autre version de ce produit est déjà installée." Il s'avère que j'avais déjà la version 3.6.3 installée.

69voto

Nick T Points 5466

La solution officielle pour la coexistence semble être la suivante Python Launcher pour Windows PEP 397, qui était inclus dans Python 3.3.0 . Installation des dumps de la version py.exe y pyw.exe des lanceurs dans %SYSTEMROOT% ( C:\Windows ) qui est ensuite associé à py y pyw scripts, respectivement.

Afin d'utiliser le nouveau lanceur (sans lui attribuer manuellement vos propres associations), laissez l'option "Enregistrer les extensions" activée. Je ne sais pas vraiment pourquoi, mais sur ma machine, Py 2.7 est resté la version "par défaut" (du lanceur).

L'exécution de scripts en les appelant directement depuis la ligne de commande les fera passer par le lanceur et analysera le shebang (s'il existe). Vous pouvez également appeler explicitement le lanceur et utiliser des commutateurs : py -3 mypy2script.py .

Toutes les sortes de shebangs semblent fonctionner

  • #!C:\Python33\python.exe
  • #!python3
  • #!/usr/bin/env python3

ainsi que des abus gratuits

  • #! notepad.exe

0 votes

"Ils" devraient vraiment inclure pylauncher dans la distribution actuelle de Python 2 pour Windows (ou faire en sorte que les gens sachent qu'il est disponible et où l'obtenir eux-mêmes).

1 votes

Peut-être, mais si vous ne vivez que dans le monde de Python 2, ce n'est pas un problème aussi important.

0 votes

Ce lanceur était disponible en tant que programme autonome au moins depuis mi 2012.

56voto

Alistair Martin Points 602

Voici ma configuration :

  1. Installez à la fois Python 2.7 et 3.4 avec le fichier Installateurs de Windows .
  2. Aller à C:\Python34 (le chemin d'installation par défaut) et changez python.exe en python3.exe
  3. Modifier vos variables d'environnement d'inclure C:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

Maintenant, en ligne de commande, vous pouvez utiliser python pour 2,7 et python3 pour 3.4.

42voto

Ivan Kucerak Points 511

À partir de la version 3.3, Python a introduit l'utilitaire Launcher for Windows. https://docs.python.org/3/using/Windows.html#python-launcher-for-Windows .

Ainsi, pour pouvoir utiliser plusieurs versions de Python :

  1. installer Python 2.x (x est la version dont vous avez besoin)
  2. installez Python 3.x (x est n'importe quelle version dont vous avez besoin, mais vous devez avoir une version 3.x >= 3.3)
  3. ouvrir Invite de commande
  4. type py -2.x pour lancer Python 2.x
  5. type py -3.x pour lancer Python 3.x

36voto

Patrick Desjardins Points 51478

Vous pouvez avoir les deux installés.

Vous devez écrire ceci devant votre script :

#!/bin/env python2.7

ou, éventuellement...

#!/bin/env python3.6

Mise à jour

Ma solution fonctionne parfaitement avec Unix, après une rapide recherche sur Google voici la solution Windows :

#!c:/Python/python3_6.exe -u

Même chose : devant votre script.

0 votes

Il peut être installé sur Linux, et peut aussi l'être sur Windows. Vous avez juste besoin de définir la variable env... vous pouvez le faire sous Windows...

7 votes

Cette solution ne fonctionnera pas avec Windows (à moins que vous ne l'appeliez à partir d'un shell de style unix (par exemple cygwin)). Le # ! est géré par le shell, et Windows ne le supporte pas. Je crois que dans l'exemple que vous avez googlé, il est géré par le serveur web, no d'être lancé dans Windows

0 votes

Oui, sur Apache sous Windows... la question demande le shell automatiquement, vous pouvez le faire avec Cygwin, Apache, etc...

9voto

J'utilise 2.5, 2.6, et 3.0 à partir du shell avec une ligne de batch scripts de la forme :

:: The @ symbol at the start turns off the prompt from displaying the command.
:: The % represents an argument, while the * means all of them.
@c:\programs\pythonX.Y\python.exe %*

Nommez-les pythonX.Y.bat et les mettre quelque part dans votre PATH. Copiez le fichier de la version mineure préférée (c'est-à-dire la plus récente) à pythonX.bat . (Par exemple copy python2.6.bat python2.bat .) Vous pouvez alors utiliser python2 file.py de n'importe où.

Cependant, cela n'aide pas ou n'affecte pas la situation de l'association de fichiers de Windows. Pour cela, vous aurez besoin d'un programme de lancement qui lit les fichiers de l'association de fichiers de Windows. #! et l'associe ensuite aux fichiers .py et .pyw.

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