Je veux exécuter un script python sans avoir à appeler explicitement "python" à chaque fois dans mon shell. J'ai essayé d'ajouter le Shebang #!/Path/to/python mais cela ne fonctionne pas semblent fonctionner. Quelqu'un connaît-il un problème? Merci beaucoup.
Vous devez ajouter le Shebang:
#!/usr/bin/env python
Rendez ensuite le script exécutable:
chmod +x foo
Ensuite, vous pouvez l'exécuter comme n'importe quel autre exécutable:
./foo
Et une note de Homer6: si vous éditez le fichier à partir de Windows et l'invoquez sur Linux, vous pouvez rencontrer l'erreur cryptique "Aucun fichier ou répertoire". Cela est dû au fait que les fins de ligne des lignes sont CRLF au lieu de LF. Si vous les convertissez en LF, le script s'exécutera comme prévu. Bloc-notes ++> Affichage> Afficher les symboles> Afficher la fin de ligne pour afficher les caractères EOL. Et Notepad ++> Edit> EOL Conversion> Unix Format pour convertir toutes les fins de ligne pour utiliser LF. Vous pouvez également utiliser le dos2unix
outil (dos2unix foo.py
), qui est présent sur la plupart des systèmes Linux.
Cela ne s'appliquait pas vraiment à vos scripts personnels mais comme vous citez beets
, notez qu'il est également possible d'automatiser cette action lorsque vous distribuez vos packages, grâce à setuptools entry_point
option.
Donc, si vous distribuez un package comme myModule
et que vous souhaitez rendre la fonction main_function()
accessible en tapant mymodulescript
dans la console, vous ajouterez probablement quelque chose comme ceci dans votre fichier setup.py
:
setup(
# your other arguments ..
entry_points={
'console_scripts': [
'mymodulescript = myModule:main_function'
]
}
)
Ajoutez une ligne en haut de votre script:
#! /usr/bin/env python
script_name.py
à script_name
chmod +x script_name
La ligne en haut sélectionne le même python
que vous obtenez en tapant python à l'invite. Vous pouvez également spécifier un chemin direct:
#!/opt/python/3.6/bin/python
Une autre solution de contournement pourrait être d'utiliser un alias défini dans le .bashrc:
par exemple. ajoutez la ligne suivante dans votre fichier .bachrc:
alias mypythonalias = "python mypyrhonfile.py"
tapez dans le terminal:
source ~/.bashrc
puis vous pouvez simplement taper:
mypythonalias
pour exécuter le fichier python.
Assurez-vous que vous pouvez exécuter/path/to/python sur votre terminal. Et assurez-vous que vous avez donné l'autorisation d'exécution pour votre fichier python. Vous pouvez donner l'autorisation pour le fichier en
chmod +x mypythonfile.py