web-dev-qa-db-fra.com

comment exécuter le script python sans taper 'python ...'

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.

38
Martin08

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.

97
David Wolever

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'
        ]
    }
)
3
mgc
  1. Ajoutez une ligne en haut de votre script:

    #! /usr/bin/env python
    
  2. Renommez votre script à partir de script_name.py à script_name
  3. rendre le script exécutable: 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
3
Anthon

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.

2
Tassos Pan

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
1
Anto Binish Kaspar