26 votes

Exécuter directement les scripts Python dans PowerShell

J'utilise Windows PowerShell. Disons que j'ai un script appelé test.py qui imprime certaines choses. Si je le fais :

PS D:\>.\test.py

puis il ouvre une fenêtre CMD qui imprime quelques éléments et se ferme ensuite. Il exécute en fait l'interpréteur Python sous CMD. Si je fais

PS D:\>python test.py

il se comporte comme je l'attendais, avec la sortie apparaissant dans PowerShell.

Comment faire en sorte que le script s'exécute dans PowerShell lorsque je donne simplement son nom ?

31voto

alex77 Points 298

Modifiez la variable d'environnement PATHEXT et ajoutez l'extension .py.

Il suffit d'ajouter cette ligne à votre Profil PowerShell :

$env:PATHEXT += ";.py"

ou vous pouvez simplement modifier PATHEXT globalement dans les paramètres du système (il suffit de chercher "environnement" dans le menu Démarrer et de choisir l'option "Modifier les variables d'environnement pour votre compte").

-1voto

rcomblen Points 255

Il se peut que plusieurs versions de Python soient installées et que la version utilisée par IDLE soit plus récente. Pour savoir quelle version de Python vous avez, vous pouvez taper >Python -V sur une ligne de commande. Si cette version semble appropriée, vous aurez peut-être besoin du chemin complet du fichier comme deuxième paramètre. Par exemple, >Python C:\myfile.py.

Si vous avez installé Python correctement, il y a toujours une chance que le simple fait de taper le nom du script le lance avec Python. Par exemple : >monfichier.py

Je trouve toujours qu'ajouter C:\Python27 à la variable %PATH% et .PY à la variable %PATHEXT% facilite l'exécution de scripts. Dans ce cas, seul >monfichier devrait fonctionner.

Modifier après la mise à jour :

Taper juste >Python sans paramètres ouvre Python en 'mode interactif' qui est différent du mode batch ou scripting auquel votre script est destiné. Si elle est exécutée avec des arguments, le premier argument est pris comme le chemin du fichier et les autres arguments sont passés au script dans la liste sys.argv.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X