Exécution d'un script python à partir d'un terminal sans extension .py
14
Je veux appeler un script python script.py à partir du terminal en tapant simplement script . Est-ce possible? Si c'est le cas, comment?
Je sais que je peux éviter de taper python script.py en ajoutant #! / Usr / bin / env python en haut du script, mais je dois encore ajouter le suffixe .py pour exécuter le script.
Les systèmes de fichiers Unix / Linux ne dépendent pas des extensions comme le fait Windows. Vous ne devriez pas avoir besoin .pyde la fin d'un fichier pour l'exécuter.
Vous pouvez exécuter le fichier en l'appelant avec l'interpréteur:
python ScriptFile
Ou en le marquant comme exécutable et en définissant l'interpréteur sur la première ligne (par exemple #!/usr/bin/python).
Si vous ne parvenez pas à exécuter le fichier avec:
/Path/to/ScriptFile
vérifier les autorisations avec
ls -l ScriptFile
Vous devrez peut-être ajouter l'indicateur exécutable et chmodainsi il s'exécutera pour vous.
Si vous utilisez régulièrement des scripts personnalisés, vous pouvez vous assurer que le répertoire dans lequel vous les stockez est ajouté à la PATHvariable d'environnement.
Le fichier se trouve dans ~ / workspace / python. J'ai ajouté ~ / workspace / python à mon chemin, j'ai exécuté sudo chmod a + x script.py ", et j'ai ajouté la ligne shebang (#! / Usr / bin / env python) en haut du script .Je peux exécuter le script en tapant * script.py , mais simplement taper le script ne fonctionne pas.
jmau5
2
Sous unix / linux, tout est un fichier et répond à son nom de fichier. Vous ne pouvez pas appeler Script.py en tant que script. Essayez de renommer le fichier script.py en script et cela devrait résoudre votre problème.
Patrick
Désolé j'ai mal compris! Tout est résolu, merci!
jmau5
5
L' .pyextension n'est pas nécessaire pour exécuter le script. Il suffit de rendre le script exécutable (par exemple en exécutant chmod a+x script) et d'ajouter la ligne shebang ( #!/usr/bin/env python).
En option, vous pouvez créer un wrapper pour votre script (un .pyfichier):
Par exemple, vous avez un script runme.pyafin que vous puissiez créer un nouveau fichier runmepour envelopper le script:
#!/usr/bin/env pythonimport runme
puis appelez la runme.pyfonctionnalité en appelant simplement runmedans le shell.
Cela est utile pour les scripts multiplateformes, car sur la plate-forme Windows, vous pouvez attribuer des .pyfichiers à appeler juste par nom sans extension et shebang dans l'en-tête, mais sur la plate-forme linux vous ne pouvez pas et ainsi le wrapper sort.
L'
.py
extension n'est pas nécessaire pour exécuter le script. Il suffit de rendre le script exécutable (par exemple en exécutantchmod a+x script
) et d'ajouter la ligne shebang (#!/usr/bin/env python
).la source
En option, vous pouvez créer un wrapper pour votre script (un
.py
fichier):Par exemple, vous avez un script
runme.py
afin que vous puissiez créer un nouveau fichierrunme
pour envelopper le script:puis appelez la
runme.py
fonctionnalité en appelant simplementrunme
dans le shell.Cela est utile pour les scripts multiplateformes, car sur la plate-forme Windows, vous pouvez attribuer des
.py
fichiers à appeler juste par nom sans extension et shebang dans l'en-tête, mais sur la plate-forme linux vous ne pouvez pas et ainsi le wrapper sort.la source