web-dev-qa-db-fra.com

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

J'utilise Windows et Shell/OS exécute automatiquement Python en fonction des paramètres du registre lorsque vous exécutez un programme sur la ligne de commande. Est-ce que cela va casser si j'installe une version 2.x et 3.x de Python sur le même ordinateur?

Je veux jouer avec Python 3 tout en pouvant exécuter des scripts 2.x sur le même ordinateur.

131
minty

La solution officielle pour la coexistence semble être le Python Launcher pour Windows , PEP 397, inclus dans Python 3.3.0 . L'installation des versions dump py.exe et pyw.exe dans %SYSTEMROOT% (C:\Windows), associé aux scripts py et pyw, respectivement.

Pour utiliser le nouveau programme de lancement (sans configurer manuellement vos propres associations), laissez l'option "Enregistrer les extensions" activée. Je ne sais pas trop pourquoi, mais sur ma machine, il laissait Py 2.7 comme "défaut" (du lanceur).

L'exécution de scripts en les appelant directement à partir de la ligne de commande les acheminera via le programme de lancement et analysera le Shebang (s'il existe). Vous pouvez également appeler explicitement le programme de lancement et utiliser les commutateurs: py -3 mypy2script.py

Toutes sortes de shebangs semblent fonctionner

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

ainsi que des abus injustifiés

  • #! notepad.exe
61
Nick T

Vous pouvez avoir les deux installés.

Vous devriez écrire ceci devant votre script:

#!/bin/env python2.7

ou finalement ...

#!/bin/env python3.6

Mettre à jour

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

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

Même chose: devant votre script.

35
Patrick Desjardins

Voici ma configuration:

  1. Installez à la fois Python 2.7 et 3.4 avec les installateurs windows .
  2. Accédez à C:\Python34 (chemin d'installation par défaut) et remplacez python.exe par python3.exe.
  3. Editervos variables d'environnement à 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.

32
Alistair Martin

Depuis la version 3.3, Python a introduit l’utilitaire Launcher pour Windows https://docs.python.org/3/using/windows.html#python-launcher-for-windows .

Donc, pour pouvoir utiliser plusieurs versions de Python:

  1. installez Python 2.x (x est la version dont vous avez besoin)
  2. installez Python 3.x (x est une version dont vous avez besoin et vous devez avoir une version 3.x> = 3.3) 
  3. ouvrir Invite de commande 
  4. tapez py -2.x pour lancer Python 2.x
  5. tapez py -3.x pour lancer Python 3.x
28
Ivan Kucerak

J'utilise les versions 2.5, 2.6 et 3.0 du shell avec des scripts de traitement par lot d'une seule 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 mettez-les quelque part dans votre CHEMIN. Copiez le fichier de la version mineure préférée (la dernière en date) dans pythonX.bat. (Exemple: copy python2.6.bat python2.bat.) Ensuite, vous pouvez utiliser python2 file.py de n’importe où.

Toutefois, cela n'aide pas et n'affecte même pas la situation d'association de fichiers Windows. Pour cela, vous aurez besoin d’un programme de lancement lisant la ligne #!, puis l’associant aux fichiers .py et .pyw.

9
Roger Pate

Voici...

winpylaunch.py ​​

#
# Looks for a directive in the form: #! C:\Python30\python.exe
# The directive must start with #! and contain ".exe".
# This will be assumed to be the correct python interpreter to
# use to run the script ON WINDOWS. If no interpreter is
# found then the script will be run with 'python.exe'.
# ie: whatever one is found on the path.
# For example, in a script which is saved as utf-8 and which
# runs on Linux and Windows and uses the Python 2.6 interpreter...
#
#    #!/usr/bin/python
#    #!C:\Python26\python.exe
#    # -*- coding: utf-8 -*-
#
# When run on Linux, Linux uses the /usr/bin/python. When run
# on Windows using winpylaunch.py it uses C:\Python26\python.exe.
#
# To set up the association add this to the registry...
#
#    HKEY_CLASSES_ROOT\Python.File\Shell\open\command
#    (Default) REG_SZ = "C:\Python30\python.exe" S:\usr\bin\winpylaunch.py "%1" %*
#
# NOTE: winpylaunch.py itself works with either 2.6 and 3.0. Once
# this entry has been added python files can be run on the
# commandline and the use of winpylaunch.py will be transparent.
#

import subprocess
import sys

USAGE = """
USAGE: winpylaunch.py <script.py> [arg1] [arg2...]
"""

if __== "__main__":
  if len(sys.argv) > 1:
    script = sys.argv[1]
    args   = sys.argv[2:]
    if script.endswith(".py"):
      interpreter = "python.exe" # Default to wherever it is found on the path.
      lines = open(script).readlines()
      for line in lines:
        if line.startswith("#!") and line.find(".exe") != -1:
          interpreter = line[2:].strip()
          break
      process = subprocess.Popen([interpreter] + [script] + args)
      process.wait()
      sys.exit()
  print(USAGE)

Je viens juste de le comprendre en lisant ce fil (parce que c'est ce dont j'avais besoin aussi). J'ai les versions 2.6.1 et 3.0.1 de Pythons sous Ubuntu et Windows. Si cela ne fonctionne pas pour vous, postez les corrections ici.

7
Nev

Lorsque vous ajoutez les deux variables d’environnement, il y aura un conflit car les deux exécutables portent le même nom: python.exe.

Il suffit de renommer l’un d’eux. Dans mon cas, je l'ai renommé en python3.exe.

Ainsi, lorsque je lance python, il exécutera python.exe qui correspond à 2.7 et quand je lance python3 il exécutera python3.exe qui est 3.6

 enter image description here

Remarque: la même chose devrait être faite avec les scripts pip.

6
EasyOdoo

Autant que je sache, Python s'exécute hors de la ligne de commande en utilisant la variable PATH par opposition à un paramètre de registre.

Donc, si vous pointez sur la bonne version de votre PATH, vous l’utiliserez. N'oubliez pas de redémarrer l'invite de commande pour utiliser les nouveaux paramètres PATH.

4
James McMahon

L’installation Python associe normalement les fichiers .py, .pyw et .pyc à l’interpréteur Python. Vous pouvez donc exécuter un script Python en double-cliquant dessus dans l'explorateur ou en tapant son nom dans une fenêtre de ligne de commande (inutile de taper python scriptname.py, il suffit que scriptname.py fasse l'affaire).

Si vous souhaitez modifier manuellement cette association, vous pouvez modifier ces clés dans le registre Windows:

HKEY_CLASSES_ROOT\Python.File\Shell\open\command
HKEY_CLASSES_ROOT\Python.NoConFile\Shell\open\command
HKEY_CLASSES_ROOT\Python.CompiledFile\Shell\open\command

Lanceur python

Des personnes ont travaillé sur un lanceur Python pour Windows: un programme léger associé aux fichiers .py et .pyw qui rechercherait une ligne "Shebang" (similaire à Linux et al) sur la première ligne et lancer Python 2.x ou 3. x au besoin. Voir "Un lanceur Python pour Windows" article de blog pour plus de détails.

3
Craig McQueen

Essayez d'utiliser Anaconda. 

En utilisant le concept des environnements Anaconda, disons que vous avez besoin de Python 3 pour apprendre la programmation, mais vous ne voulez pas effacer votre environnement Python 2.7 en mettant à jour Python. Vous pouvez créer et activer un nouvel environnement nommé "snakes" (ou ce que vous voulez) et installer la dernière version de Python 3 comme suit:

conda create --name snakes python=3

C'est plus simple qu'il n'y paraît, jetez un coup d'œil à la page d'introduction ici: Démarrer avec Anaconda

Ensuite, pour résoudre votre problème spécifique lié à l’avancement parallèle des versions 2.x et 3.x, voir : Gestion des versions de Python avec Anaconda

3
Cale Sweeney

Voici comment exécuter Python 2 et 3 sur le même ordinateur

  1. installer Python 2.x 
  2. installer Python 3.x 
  3. Démarrer Powershell 
  4. Type Python -2 pour lancer Python 2.x 
  5. Type Python -3 pour lancer Python 2.x 

Le Python Launcher pour Windows a été intégré à Python depuis la version 3.3, comme promis en 2011, lorsque le stand a fait ses débuts:

Python Launcher pour Windows

2
rogerwamba

Avant d’installer courageusement les deux simultanément, j’avais tant de questions à poser. Si je donne du python, ira-t-il à py3 quand je veux py2? pip/virtualenv aura-t-il lieu sous py2/3?

Cela semble être très simple maintenant.

Il suffit d'installer aveuglément les deux. Assurez-vous d’obtenir le bon type (x64/x32) . Pendant/après l’installation, assurez-vous d’ajouter au chemin de votre variables d’environnement .

[ENVIRONMENT]::SETENVIRONMENTVARIABLE("PATH", "$ENV:PATH;C:\PYTHONx", "USER")

Remplacez le x dans la commande ci-dessus pour définir le chemin.

Ensuite, allez dans les deux dossiers. 

Aller vers

python3.6/Scripts/

et renommez pip en pip3.

Si pip3 existe déjà, supprimez-le. Cela garantira que juste pip sera exécuté sous python2. Vous pouvez vérifier par:

pip --version

Si vous voulez utiliser pip avec python3, utilisez simplement 

pip3 install 

Vous pouvez également faire la même chose avec python et d’autres.

À votre santé!

2
Shreyaa Sridhar

Easy-Peasy, après avoir installé les deux versions python, ajoute les chemins d'accès aux variables d'environnement; voir environment variable settings . Accédez ensuite aux dossiers python 2 et python 3 et renommez-les en python2 et python3 respectivement, comme indiqué here for python2 et here for python3 . Maintenant, dans cmd, tapez python2 ou python3 pour utiliser votre version requise, voir here .

1

Assurez-vous que la variable d’environnement PATH ne contient pas les deux fichiers python.exe (ajoutez celui que vous utilisez actuellement pour exécuter des scripts au jour le jour) ou effectuez les opérations décrites par Kniht avec les fichiers de traitement par lots ..__ En dehors de cela, je ne vois pas pourquoi pas.

P.S: J'ai installé 2.6 comme python "primaire" et 3.0 comme python "play". Le 2.6 est inclus dans le CHEMIN. Tout fonctionne bien.

1
Geo

Je pense qu'il existe une option pour configurer l'association de fichiers Windows pour les fichiers .py dans le programme d'installation. Décochez-la et ça devrait aller.

Sinon, vous pouvez facilement ré-associer des fichiers .py à la version précédente. La manière la plus simple est de faire un clic droit sur un fichier .py, sélectionnez "ouvrir avec"/"choisir programme". Dans la boîte de dialogue qui apparaît, sélectionnez ou naviguez jusqu'à la version de python que vous souhaitez utiliser par défaut, puis cochez la case "Toujours utiliser ce programme pour ouvrir ce type de fichier". 

1
Brian

Hmm..J'ai fait cela maintenant en téléchargeant simplement Python 3.6.5 pour Windows à https://www.python.org/downloads/release/python-365/ et je me suis assuré que le programme de lancement était installé. Ensuite, j'ai suivi les instructions d'utilisation de python 2 et python 3. Redémarrez la commande Invite, puis utilisez py -2.7 pour utiliser Python 2 et py ou py -3.6 pour utiliser Python 3. Vous pouvez également utiliser pip2 pour les noms pip et pip et pip pour Python 3 .

0
FearlessFuture

Je commence juste avec python maintenant. Je lis le livre de Zed Shaw "Learn Python Hard Way" qui nécessite la version 2.x de Python mais prend également un cours qui nécessite la version 3.x de Python

Alors voici ce que j'ai fait. 

  1. Télécharger python 2.7
  2. lancez Power Shell (devrait déjà être installé sur Windows)
  3. lancez python IN POWERSHELL (s'il ne reconnaît pas, passez à l'étape 4)
  4. Seulement si powershell ne reconnaît pas python 2.7tapez ce qui suit: 

"[ENVIRONMENT] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C:\PYTHON27 "," USER ")" (Pas de guillemets extérieurs)

  1. Maintenant, tapez python et vous devriez le voir dire python 2.7 bla bla bla

MAINTENANT pour Python 3.x

Le téléchargement simple de python 3.x est fourni avec l'application python pour Windows. SO épinglez simplement l'application Python pour Windows dans votre barre de tâches ou créez un raccourci vers le bureau et vous avez terminé!

Ouvrez Python pour Windows pour 3.x

Ouvrez Powershell pour Python 2.x

J'espère que ça aide!

0
Davidopopoplis

Je suppose donc que j’ai installé côte à côte Python 2.4, 2.5 et 2.6 sur le même ordinateur.

0
Dan