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.
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
Vous pouvez avoir les deux installés.
Vous devriez écrire ceci devant votre script:
#!/bin/env python2.7
ou finalement ...
#!/bin/env python3.6
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.
Voici ma configuration:
C:\Python34
(chemin d'installation par défaut) et remplacez python.exe par python3.exe.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.
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:
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.
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.
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
Remarque: la même chose devrait être faite avec les scripts pip
.
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.
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
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.
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
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:
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é!
Easy-Peasy, après avoir installé les deux versions python, ajoute les chemins d'accès aux variables d'environnement; voir . Accédez ensuite aux dossiers python 2 et python 3 et renommez-les en python2 et python3 respectivement, comme indiqué et . Maintenant, dans cmd, tapez python2 ou python3 pour utiliser votre version requise, voir .
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.
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".
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 .
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.
"[ENVIRONMENT] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C:\PYTHON27 "," USER ")" (Pas de guillemets extérieurs)
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!
Je suppose donc que j’ai installé côte à côte Python 2.4, 2.5 et 2.6 sur le même ordinateur.