Comment installer à la fois Python 2.x et Python 3.x dans Windows

230

Je fais la plupart de ma programmation en Python 3.x sur Windows 7, mais maintenant je dois utiliser la bibliothèque d'imagerie Python (PIL), ImageMagick et wxPython, qui nécessitent tous Python 2.x.

Puis-je avoir installé Python 2.x et Python 3.x dans Windows 7? Lorsque j'exécute un script, comment "choisir" quelle version de Python doit l'exécuter? Les programmes susmentionnés pourront-ils gérer plusieurs versions de Python installées à la fois? J'ai cherché pendant des heures et des heures comment faire cela en vain.

Merci.

dln385
la source
2
Oui, comme le dit @NickT, c'est plus simple. Malheureusement, aucune des réponses ci-dessous ne donne une approche simple et directe. (Ceux qui mentionnent la version 3.3 se rapprochent le plus.) Pour une meilleure réponse, voir celle acceptée sous la question en double: stackoverflow.com/a/17245543/1593924 En bref, utilisez le nouveau lanceur "py", avec ou sans un -3 paramètre. Et pensez à ajouter des shebangs (#!) À vos scripts pour ne pas avoir besoin de paramètre.
Jon Coombs
1
De plus, certains ont trouvé les détails que j'ai publiés ici utiles: stackoverflow.com/a/13533958/1593924
Jon Coombs

Réponses:

150

J'ai trouvé que la façon formelle de procéder est la suivante:

Installez simplement deux (ou plus, en utilisant leurs installateurs) versions de Python sur Windows 7 (pour moi, travaillez avec 3.3 et 2.7).

Suivez les instructions ci-dessous, en modifiant les paramètres de vos besoins.

Créez la variable d'environnement suivante (par défaut lors d'un double clic):

Name:  PY_PYTHON
Value: 3

Pour lancer un script dans un interpréteur particulier, ajoutez le shebang suivant (début du script):

#! python2

Pour exécuter un script à l'aide d'un interpréteur spécifique, utilisez la commande d'invite suivante:

> py -2 MyScript.py

Pour lancer un interpréteur spécifique:

> py -2

Pour lancer l'interpréteur par défaut (défini par la variable PY_PYTHON):

> py

Ressources

Documentation: Utilisation de Python sous Windows

PEP 397 - Lanceur Python pour Windows

Pedro Vagner
la source
8
De plus, pour utiliser easy_install ou pip avec les deux versions, modifiez le chemin à inclure c:\python35;c:\python35\scripts;c:\python27\scripts;. Cela permet d'utiliser pip2/ pip3, et easy_install-2.7/ easy_install-3.5au lieu de pipet easy_install.
rdtsc
1
Ne fonctionnera pas avec divers programmes qui ne livrent pas leur propre Python et insistent pour utiliser la version du système, et ne respectent pas le lanceur.
Jonathan Baldwin
1
Non, n'ajoutez aucun Python au chemin. Utilisez py -m pip install .... Ajoutez des commutateurs après pypour choisir le Python sous lequel exécuter pip comme ci-dessus.
Mark Tolonen
75

Ce que j'ai fait, c'est télécharger les versions 2.7.6 et 3.3.4. Python 3.3.4 a la possibilité de lui ajouter le chemin dans la variable d'environnement pour que cela soit fait. Donc, fondamentalement, je viens d'ajouter manuellement Python 2.7.6.

Comment...

  1. Démarrer> dans le type de recherche dans l'environnement, sélectionnez "Modifier les variables d'environnement sur votre compte" 1

  2. Faites défiler jusqu'à Chemin, sélectionnez le chemin, cliquez sur modifier.

  3. Ajoutez C: \ Python27; vous devriez donc y avoir des chemins vers les deux versions de Python, mais si vous ne le faites pas, vous pouvez facilement le modifier pour que vous le fassiez ..... C: \ Python27; C: \ Python33;

  4. Accédez au dossier Python27 dans C: \ et renommez une copie de python.exe en python2.exe

  5. Accédez au dossier Python34 dans C: \ et renommez une copie de python.exe en python3.exe

  6. Test: ouvrez l'invite de commande et tapez python2 .... BOOM! Python 2.7.6. sortir.

  7. Test: ouvrez l'invite de commande et tapez python3 .... BOOM! Python 3.4.3. sortir.

Remarque: (pour ne pas casser les commandes pip aux étapes 4 et 5, conservez une copie de python.exe dans le même répertoire que le fichier renommé)

user3458330
la source
43
Cela cassera pip2 et pip3! Ne remplacez pas python, copiez-le et renommez le deuxième fichier en python2 / python3.
brunofitas
1
juste un mot d'avertissement, je n'ai pas pu désinstaller python jusqu'à ce que je revienne en arrière. Mon conseil est de faire des copies et de les renommer, mais de laisser les fichiers python.exe originaux seuls ** comme également mentionné par bruno.
Logic1
2
Pourriez-vous traiter les commentaires de brunofitas dans la réponse?
030
Ouais, je viens de renommer python.exe dans l'installation Python3 en python3.exe. Je pense que cela se produit automatiquement avec python dans un environnement * nix. Bien sûr, il n'y a pas de fichiers .exe mais il existe un programme python2 et python3. :)
user3870315
Si vous avez une bibliothèque / un plugin qui dépend de l'une ou l'autre version de python, assurez-vous que cette version vient en premier dans votre variable d'environnement PATH
aphoe
51

J'ai plusieurs versions dans Windows. Je change juste le nom de l'exe de la version à laquelle je ne fais pas défaut.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

En ce qui concerne les installateurs de packages, la plupart des installateurs exe vous permettent de choisir l'installation de python pour ajouter également le package. Pour une installation manuelle, consultez l'option --prefix pour définir où le package doit être installé:

http://docs.python.org/install/index.html#alternate-installation-windows-the-prefix-scheme

monkut
la source
Cela a fonctionné. Avant de faire ce changement, lorsque j'ai essayé d'exécuter un programme en Python 2.7, il fonctionnait toujours en Python 3.1 (peut-être parce que Windows 7 ne peut pas gérer deux programmes différents avec le même nom). Après avoir renommé les exes comme indiqué, tout s'est bien passé.
dln385
4
@ dln385: S'il répond à votre question, vous devez l'accepter en cliquant sur la coche.
dappawit
1
Cela a également fonctionné pour moi. J'ai eu un conflit entre Python 2.7 et Python 3.2. Comme j'avais d'abord installé Python 3.2 (et défini de manière appropriée en tant que variable d'environnement), je ne pouvais pas accéder à Python 2.7 dans l'invite (à la place, j'ai obtenu Python 3.2). Je voulais utiliser par défaut Python 2.7, par conséquent, j'ai changé python.exe en python3.2.exe et j'ai conservé python.exe de Python 2.7 inchangé. Cela a fait l'affaire.
Robert Smith
Je n'ai pas installé de nouveau python3 sur Windows depuis un moment, mais la version que j'ai inclut pip comme pip3et pip3.4. (il l'inclut également en tant que pip, mais je pense que la suppression devrait résoudre tous les conflits avec python2). En fait, je n'en ai pas C:\Python34\Scriptsdans mon Path, donc je n'ai eu aucun problème de pip ...
monkut
30

Si vous utilisez Anaconda Python, vous pouvez facilement installer divers environnements.

Imaginons que vous ayez installé Anaconda Python 2.7 et que vous vouliez un environnement python 3.4:

conda create -n py34 python=3.4 anaconda

Puis pour activer l'environnement:

activate py34

Et pour désactiver:

deactivate py34

(Avec Linux, vous devriez utiliser source activate py34.)

Liens:

Télécharger Anaconda Python

Instructions pour les environnements

philshem
la source
IMO conda est de loin le meilleur moyen de jouer avec différentes installations Python. J'ai gâché tellement de choses avant de déménager à Anaconda.
jrinker
11

Pour installer et exécuter n'importe quelle version de Python dans le même système, suivez mon guide ci-dessous.


Par exemple, disons que vous souhaitez installer Python 2.x et Python 3.x sur le même système Windows.

  1. Installez les deux versions binaires où vous le souhaitez.

    • Lorsque vous y êtes invité, n'enregistrez pas leurs extensions de fichier et
    • ne les ajoutez pas automatiquement à la variable d'environnement PATH
  2. Exécuter simplement la commande que pythonl'exécutable rencontré pour la première fois dans PATH sera choisi pour le lancement. En d'autres termes, ajoutez manuellement les répertoires Python. Celui que vous ajoutez en premier sera sélectionné lorsque vous tapez python. Les programmes python consécutifs (ordre croissant de placement de leurs répertoires dans PATH) seront choisis comme suit:

    • py -2 pour le second python
    • py -3 pour le troisième pythonetc.
  3. Peu importe l'ordre des "pythons", vous pouvez:

    • exécutez les scripts Python 2.x à l'aide de la commande: py -2 (fonctionnalité Python 3.x) (c'est-à-dire que le premier programme d'installation Python 2.x trouvé dans votre PATH sera sélectionné)
    • exécuter des scripts Python 3.x en utilisant la commande: ou py -3 (c'est-à-dire que le premier programme d'installation Python 3.x trouvé dans votre PATH sera sélectionné)

Dans mon exemple, j'ai Python 2.7.14 installé en premier et Python 3.5.3. Voici comment commence ma variable PATH:

CHEMIN = C: \ Program Files \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Program Files \ Python_3.6 \ Scripts \; C: \ Program Files \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Program Files (x86) \ Common Files \ Intel \ Shared

...

Notez que Python 2.7 est le premier et Python 3.5 le second.

  • L'exécution de la pythoncommande lancera donc python 2.7 (si Python 3.5 la même commande lancerait Python 3.5).
  • L'exécution py -2lance Python 2.7 (car il arrive que le second Python soit Python 3.5 qui est incompatible avec py -2). L'exécution py -3lance Python 3.5 (car c'est Python 3.x)
  • Si vous aviez un autre python plus tard dans votre chemin vous lancer comme ceci: py -4. Cela peut changer si / lorsque la version 4 de Python est publiée.

Maintenant py -4ou py -5etc. sur les sorties de mon système: Requested Python version (4) not installedou Requested Python version (5) not installedetc.

J'espère que c'est assez clair.

Nikos
la source
Comment pourriez-vous spécifier une installation pip dans l'une des dists Python?
Víctor Martínez
Pour le premier python trouvé, tapez simplement pip. Pour tout autre python installé, vous devez spécifier manuellement le chemin, c'est-à-dire. C:\Python27\Scripts\pip.py [parameters]. (Bien sûr, comme raccourci, vous pouvez mettre n'importe quel exe que vous voulez dans une variable d'environnement.)
Nikos
@ Nik-Lz de quelle commande "py -2" s'agit-il, à laquelle vous faites référence? Je n'ai pas l'air de les avoir sur mes fenêtres 7.
Janos
2
C'est exactement ainsi que python doit être utilisé sur Windows en cas de versions multiples.
getName
8

À partir de la version 3.3, la version Windows possède un lanceur Python, veuillez consulter la section 3.4. Lanceur Python pour Windows

Dmitry Sobolev
la source
8

Voici ce que vous pouvez faire:

Installez cmder . Ouvrez et utilisez Cmder comme vous le feriez avec votre terminal cmd. Utilisez l'alias de commande pour créer des alias de commande.

J'ai fait ce qui suit:

alias python2 = c:\python27\python.exe
alias python3 = c:\python34\python.exe

Et c'est tout! ;-)

user402429
la source
6
set-alias python2 c:\python27\python.exe
Prophète Daniel
Utilisez set-alias comme exemple si vous utilisez Powershell. Dans ce cas, il ne serait pas nécessaire d'installer Cmder.
Prophète Daniel
@ProphetDaniel Cela devrait être publié comme une réponse distincte. Cela répond totalement à la question d'origine.
Dr_Zaszuś
7

En fait, je viens de penser à une solution intéressante. Bien que Windows ne vous permette pas d'alias facilement des programmes, vous pouvez à la place créer des fichiers batch renommés qui appelleront le programme actuel.

Au lieu de renommer l'exécutable qui cassera beaucoup de choses, y compris pip, créez le fichier python2.bat dans le même répertoire que python2.exe. Ajoutez ensuite la ligne suivante:

%~dp0python %*

Que signifie cette syntaxe archaïque? Eh bien, c'est un script batch, (version Windows de bash). % ~ dp0 obtient le répertoire courant et% * passera juste tous les arguments à python qui ont été passés au script.

Répétez l'opération pour python3.bat

Vous pouvez également faire de même pour pip et d'autres utilitaires, il suffit de remplacer le mot python dans le fichier par pip ou quel que soit le nom de fichier. L'alias sera le nom du fichier.

Mieux encore, lorsqu'il est ajouté au PATH, Windows ignore l'extension afin de fonctionner

python3

Lance la version python3 et la commande python2 lance la version python2.

BTW, c'est la même technique que Spyder utilise pour s'ajouter au chemin sous Windows. :)

Skylion
la source
1
Solution géniale sans modifier les fichiers python existants.
Om Prakash
3

Vous pouvez installer plusieurs versions de Python sur une seule machine, et pendant l'installation, vous pouvez choisir que l'une d'elles s'associe aux extensions de fichier Python. Si vous installez des modules, il y aura différents packages d'installation pour différentes versions, ou vous pouvez choisir la version que vous souhaitez cibler. Puisqu'ils s'installent généralement dans le répertoire site-packages de la version de l'interpréteur, il ne devrait pas y avoir de conflits (mais je n'ai pas testé cela). Pour choisir la version de python, vous devez spécifier manuellement le chemin d'accès à l'interpréteur s'il n'est pas celui par défaut. Autant que je sache, ils partageraient les mêmes variables PATH et PYTHONPATH, ce qui peut être un problème.

Remarque: je lance Windows XP. Je n'ai aucune idée si l'un de ces changements pour les autres versions, mais je ne vois aucune raison pour que ce soit le cas.

li.davidm
la source
3
J'ai python 2.5, 2.6 et 3.1 tous installés simultanément, il ne m'est même jamais venu à l'esprit que je devrais faire quelque chose de plus difficile que d'exécuter tous les programmes d'installation pour chaque version dont j'ai besoin.
SingleNegationElimination
3

Ce que j'ai fait sur mon propre ordinateur Windows où j'ai installé Python 2.7 et Python 3.4, c'est que j'ai écrit un simple fichier .bat dans le même répertoire que mes fichiers Python.exe. Ils ressemblent à quelque chose,

cmd /k "c:\python27\python.exe" %*

Le% * vous permet d'ajouter des arguments (fichiers Python) par la suite. Je pense que / k garde l'invite ouverte après avoir terminé d'exécuter le script. Ensuite, je l'enregistre en tant que python27.bat Ensuite, je vais dans mon répertoire Python 3 et y crée un fichier bat. Maintenant, dans ma ligne de commande, je peux écrire

Python27 helloworld.py

Ou

Python34 helloworld.py

Et ils fonctionneront dans leurs versions respectives de Python. Assurez-vous que c: \ python27 et c: \ python34 sont dans vos variables d'environnement.

J'ai ma réponse d' ici

Bryan Kimani
la source
2

J'ai fait cela en trois étapes en suivant les instructions ici: Tout cela est pris directement à partir d'ici: http://ipython.readthedocs.io/en/stable/install/kernel_install.html . J'exécute actuellement Python 2.x sur Windows 8 et j'ai installé Anaconda 4.2.13.

1) Installez d'abord la dernière version de python:

conda create -n python3 python=3 ipykernel

2) Ensuite, activez python3

activate python3

3) Installez le noyau:

python -m ipykernel install --user

Si vous avez Python 3 installé et que vous souhaitez installer 2, changez les 2 et les 3 ci-dessus. Lorsque vous ouvrez un nouveau bloc-notes, vous pouvez désormais choisir entre Python 2 ou 3.

Moiz Kapadia
la source
1

Vérifiez vos variables d'environnement système après l'installation de Python, les répertoires de python 3 doivent être d'abord dans votre variable PATH, puis python 2.

La variable de chemin qui correspond en premier est celle que Windows utilise.

Comme toujours, py -2 lancera python2 dans ce scénario.

Spitfire19
la source
1

J'ai moi-même rencontré ce problème et j'ai créé mes lanceurs dans un .bat afin que vous puissiez choisir la version que vous souhaitez lancer.

Le seul problème est que votre .py doit être dans le dossier python, mais de toute façon voici le code:

Pour Python2

@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Pour Python3

@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Enregistrez-les sous .bat et suivez les instructions à l'intérieur.

KinDa
la source
0

Installez celui que vous utilisez le plus (3,3 dans mon cas) par-dessus l'autre. Cela forcera IDLE à utiliser celui que vous voulez.

Alternativement (à partir du fichier LISEZMOI python3.3):

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 du script de configuration), vous devez vous assurer que votre exécutable python principal n'est pas remplacé par l'installation d'une version différente. Tous les fichiers et répertoires installés à l'aide de "make altinstall" contiennent la version principale et la version mineure et peuvent ainsi 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 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.6, 2.7 et 3.3 avec 2.7 comme version principale, vous exécuterez "make install" dans votre répertoire de compilation 2.7 et "make altinstall" dans les autres.

abudhabikid
la source
0

Je devais juste les installer. Ensuite, j'ai utilisé le logiciel gratuit (et portable) sur http://defaultprogramseditor.com/ sous "Paramètres de type de fichier" / "Menu contextuel" / recherche: "py", j'ai choisi le fichier .py et ajouté une commande "ouverte" pour le 2 IDLE en copiant la commande existante nommée 'open with IDLE, en changeant les noms en IDLE 3.4.1 / 2.7.8 et en remplaçant les numéros de fichiers de leurs versions respectives dans le chemin du programme. Maintenant, je dois juste cliquer avec le bouton droit sur le fichier .py et choisir quel IDLE je veux utiliser. Peut faire de même avec des interprètes directs si vous préférez.

wheya
la source
-1

Fonctionne uniquement si vous exécutez votre code dans votre IDE Python

J'ai Python 2.7 et Python 3.3 installés sur mon système d'exploitation Windows. Si j'essaie de lancer un fichier, il s'ouvrira généralement sur l'IDE python 2.7. Comment j'ai résolu ce problème, c'est quand j'ai choisi d'exécuter mon code sur python 3.3, j'ouvre python 3.3 IDLE (GUI Python), sélectionne un fichier, ouvre mon fichier avec IDLE et l'enregistre. Ensuite, lorsque j'exécute mon code, il s'exécute sur l'IDLE avec lequel je l'ouvre actuellement. Cela fonctionne vice versa avec 2.7.

user3295433
la source
-1

J'ai installé à la fois python 2.7.13 et python 3.6.1 sur windows 10pro et j'obtenais la même "erreur fatale" lorsque j'ai essayé pip2 ou pip3.

Ce que j'ai fait pour corriger cela était d'aller à l'emplacement de python.exe pour les fichiers python 2 et python 3 et de créer une copie de chacun, j'ai ensuite renommé chaque copie en python2.exe et python3.exe en fonction de la version de python dans le dossier d'installation. J'ai donc eu dans chaque dossier d'installation de python à la fois un fichier python.exe et un python2.exe ou python3.exe selon la version de python.

Cela a résolu mon problème lorsque j'ai tapé pip2 ou pip3.

eddy onyango
la source
-2

Si vous ne pouvez rien faire d'autre, ouvrez un interpréteur dans la version que vous choisissez (je préfère utiliser iPython) et:

import subprocess

subprocess.call('python script.py -flags')

Cela utilise la version python sous laquelle vous travaillez actuellement. Fonctionne très bien pour un seul script, mais deviendra rapidement incontrôlable s'il y a beaucoup de scripts que vous exécutez, auquel cas vous pouvez toujours créer un fichier batch avec tous ces appels à l'intérieur. Pas la réponse la plus élégante, mais ça marche.

Existe-t-il un moyen de créer des alias pour différentes versions de python à la Linux?

user2796022
la source