[windows] executer automatiquement (et/ou manuellement) la bonne version de python
Ayant du rinstaller mon système suite à un virus assez invasif et emmerdant, j'ai donc refait au propre mes différentes install de python, ainsi que les différentes manips dans windows... Et j'ai pensé que mettre tout cela au clair pourrais être apprécié par d'autres personnes...
Tout d'abord, je tiens à signaler cette discussion, discution dans la quelle il vaut mieux (dans le cas où vous optez pour ma soluce), suivre les démarches décrites ici que là-bas. Toutefois c'est surtout les soluces de PauseKawa que je voudrait signaler, soluces plus... universelle, non cantonée à un os particulier.
Bon, maintenant faisons le tour des résultats obtenus à l'issue de ce guide :
- une entré dans le menu contextuel (click droit) sur un fichier py permettant de choisir la version de python à executer (une entrée par version)
- une entrée (toujours dans le menu contextuel) permettant de choisir quasi-automatiquement la bonne version (il faudra simplement indiquer la version dans les script via un petit commentaire parmis les 3 premières lignes, une version sera choisie par défaut dans le cas de l'abscence de la dite ligne)
- des commandes pour chaque versions executables depuis la console windows, ainsi que la commande de choix automatique
- BONUS : des entrées dans le menu contextuel pour ouvrir une console windows dans le repertoire selectionné, ou déjà ouvert.
Tout d'abord, faites bien la différence entre la console windows et la console python. Je pars du principe que vous la faites.
Pour faire tout cela, commencez par installer toutes vos version de python. Une fois cela fait, dans le but d'économiser du temps dans le cas d'une éventuelle réinstalation du système, créez un dossier PyShortcuts dans un disque autre que C, si possible. Si vous n'avez que C: comme disque, créez ce dossier dans C:, cela marche tout autant, mais tout ce que nous créeront dedans devra être refait si vous réinstallez votre system.
Ensuite, il vous faut vérifiez que les extension des fichiers sont bien affichés, pour cela, ouvrez un dossier, cliques sur Outils>Option des dosssiers>Onglet affichage et s'assurer dans la partie "parametres avancés" que l'option "Masquer les extension dont le type est connu" est décochée.
Maintenant, dans ce dossier, nous allons créer des "commandes", et ces commandes devront être trouvée par windows depuis n'importe quel dossier, pour cela, nous allons lui indiquer qu'il devra les chercher ici :
- ouvrez le panneau de configuration
- ouvrez "System"
- onglet "Avancé"
- bouton "Variables d'environnement"
- Dans la partie variable d'environnement, trouver "Path", cliquez dessus et cliquez ensuite sus modifier
- Dans le champs "Valeur de variable", allez à la fin, ajoutez un ";" (sans les guillemets) puis tapez le chemin complet du dossier que nous venons de créer
- Enfin, validez tout
Chaque installations de python contiennt un fichier python.exe, nous allons maintenant créer des commandes simples permettant d'éxécuter pour chacunes le python.exe d'une version :
- Dans le dosier créer, faites : fichier>nouveau>document texte
- nommez ce fichier p26.bat (pour la version 2.6, ou p27.bat pour la version 2.7, etc...)
- maintenant, faites un clic droit dessus et cliquez sur modifier
- une fenêtre notepad s'est ouverte, il vous faut écrire :
Code:
1 2
| @LeCheminDeLaVersionDePythonConcernée\python.exe %*
@pause |
Remplacez la partie en rouge par le chemin de la bonne version de python (ex: C:\Python26 , ce qui donnera au complet @C:\Python26\python.exe %*) - Enregistrez et quittez
- Répetez les étapes précedentes pour chaques versions de python
Maintenant, nous allons nous attaquer à la commande automatisée. Le principe, va être d'appeler un script python, qui analysera les première lignes du script python que vous voudrez lancer (script cible) pour choisir quelle version de python utiliser :
- commençons par créer le script python, que nous allons créer dans le dossier PyShortcuts et que nous appellerons _python.py
- son contenu sera le suivant, il utilise ma méthode, il il vous sera assez facile de le modifier pour mettre en place votre propre convention si la mienne ne plait pas, il vous faudra en revanche obligatoirement modifier la version par défaut par une de celle installée chez vous, chez moi c'est la 26, cette ligne se situe vers le bas du fichier :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import sys, os
filepath, filename = os.path.split(sys.argv[1])
args = sys.argv[1:]
os.chdir(filepath)
with open(filename) as f_in:
nl=0
for line in f_in:
if '#v'==line[0:2]:
v=line.strip()[2:]
print 'version %s found'%v
os.system('p%s %s'%(v, ' '.join(args)))
sys.exit()
elif nl>2:
break
nl+=1
print 'version not found, 26 used by default'
os.system('p26 %s'%(' '.join(args)))
sys.exit() |
- maintenant créer le fichier "python.bat"
- modifiez-en le contenu de façon à obtenir :
Code:
1 2
| @p26 CheminDePyShortcuts\_python.py %*
@pause |
Remplacez la partie en rouge par le chemin complet du dossier PyShortcuts. Vous pouvez (et devez même) remplcer également p26 par la commnde désignat une de vos versions installée (de préférence une 2.x, à cause des commandes print... sinon modifiez le script _python.py en fonction) - Enregistrez et quittez
Nous allons maintenant créer les entrées dans les menus contextuels :
- ouvrez un dossier, peu importe lequel
- cliquez sur le menu Outils
- Option des dossiers
- Onglet "Types de fichiers"
- Cherchez PY, et selectionnez-le
- cliquez maintenant sur le bouton "Avancé"
- selectionnez "open", et cliquez sur "Modifier"
- cliquez sur "Parcourir" et allez cherchez le fichier python.bat
- dans le champ "Application utilisée [...]", allez à la fin, et ajouter (sans les guillemets, et remarquez la présence de l'espace...) " %*"
- répetez les manipulation ci-dessus depuis l'étape 5, mais au lieu de selectioner "open" puis "Modifier...", faites "Nouveau...", et mettez le nom de la version de python dans le champ "Action" de la fenêtre qui apparaîtra. Et selectionnez évidemment le .bat de la version ciblée
- Maintenant selectionnez l'action qui devra être effectuée par défaut, puis cliquez sur "Par défaut"
Et Voilà ! Il ne vous reste plus qu'a ajouter dans vos script, dans une des 3 premières ligne, une ligne où XX est le numéro de la version sans les point (26 et pas 2.6 ...)
BONUS :
Voici le bonus vous permettant d'avoir un entrée dans le menu contextuel qui ouvre une console dans le dossier selectionné, ou le dossier ouvert (le nom des commandes diffèrent selon si l'on fait un clique droit sur un dossier (auquel cas la console s'ouvrira dans ce dossier) ou si l'on clique sur un fichier (auquel cas la console s'ouvrira dans le dossier du fichier selectionné)
- créez un fichier .reg, peut importe le nom, du moment qu'il est de l'extension reg.
- cliquez-droit dessus, puis selectionnez modifier
- inserez ce contenu :
Code:
1 2 3 4 5 6 7
| Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\Terminal Here\command]
@="cmd.exe /k cd %cd%"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Terminal In That Folder\command]
@="cmd.exe /k cd %1" |
- enregistrez, quittez, puis double-cliquez dessus, et voilà :D