web-dev-qa-db-fra.com

Exécution de scripts Python via la ligne de commande Windows

Je viens de commencer à apprendre Python en utilisant Learning Python de Mark Luts. Dans son livre, il propose un exemple de script simple appelé via le shell Windows. Dans l'exemple, il appelle est la suivante:

C:\code> python script1.py

J'ai modifié les variables d'environnement sur ma machine pour pouvoir appeler

C:\User\Example> python

d'ouvrir l'interprète et je peux aussi appeler quelque chose comme

C:\User\Example> script1

exécuter un script que j'ai écrit et placé dans le répertoire de mon choix. Mon problème est que je ne peux pas appeler

C:\User\Example> python script1.py

dans ma ligne de commande, comme il le fait dans le livre. Il a parlé d'une variable d'environnement PYTHONPATH, cependant, cette variable n'est pas présente sur ma machine. Je n'ai que 'chemin', 'TEMP' et 'TMP'. En particulier, lorsque j'essaie de faire un tel appel, j'obtiens l'erreur

python: can't open file 'script1.py': [Errno 2] No such file or directory

Que dois-je faire pour que ce type de commande fonctionne correctement sur la ligne de commande?

3
Alden Bernitt

Extrait du livre (p. 44, 4 e éd.):

Enfin, n'oubliez pas de donner le chemin d'accès complet à votre script s'il réside dans un répertoire différent de celui dans lequel vous travaillez.

Pour votre situation, cela signifie utiliser

C:\User\Example> python C:\User\Example\my_scripts\script1.py

Vous pouvez écrire un fichier de commandes qui recherche le script dans un répertoire prédéfini:

@echo off
setlocal
PATH=C:\User\Example\Python36;%PATH%
SCRIPT_DIR=C:\User\Example\my_scripts
python %SCRIPT_DIR\%*
2
David Cullen

Vous appelez python dans le contexte de C:\User\Example et lui transmettez le nom du fichier que vous souhaitez exécuter par le biais de l’interpreter (script1.py). Il est clair que la variable PATH est configurée correctement, de sorte que vous pouvez appeler python de n’importe où sur votre ordinateur, car nous pouvons voir qu’elle est en cours d’exécution mais ne peut pas réellement trouver votre script. 

Cependant, vous avez indiqué dans le commentaire que vos scripts sont en réalité situés dans C:\User\Example\my_scripts. En d'autres termes, vous transmettez à python le nom d'un fichier qui n'existe pas !! (au moins du contect de C:\User\Example).

Vous devez être dans le répertoire du script pour que l'exécutable python puisse le trouver. 

Vous pouvez également exécuter la commande python et lui donner plus d'informations sur l'emplacement du script. Par exemple, vous pouvez exécuter python .\my_scripts\script1.py si vous vous lancez dans le contect de C:\User\Example et que vos scripts sont au format C:\User\Example\my_scripts.

0
wheeler