web-dev-qa-db-fra.com

Exécution d'un script à partir d'un problème de shell

Lubuntu Raring Ringtail. Je veux pouvoir exécuter mes scripts avec ./

Je lance mon script python avec #!/usr/bin/python et il indique

bash : ./myscript.py: /usr/bin/python^M: bad interpreter: No such file or directory

Si j'utilise #!/usr/bin/env python, cela donne une erreur similaire:

: No such file or directory

Qu'est-ce que je fais mal?

J'ai absolument installé python et je peux exécuter les scripts normalement avec python myscript.py

1
Anonymous Entity

Dans le ^M, vous pouvez voir que le fichier myscript.py utilise des sauts de ligne de type Windows/DOS (Windows utilise CR LF (retour chariot + saut de ligne) à la fin d'une ligne. Unix n'utilise que LF - donc ce que vous voyez comme ^M est le CR Donc, vous n'utilisez pas /usr/bin/python mais /usr/bin/python<CR> qui n'existe pas.

Vous pouvez supprimer le ^M à l'aide de dos2unix (effectuez un Sudo apt-get install dos2unix à installer, puis utilisez dos2unix myscript.py).

8
Thomas

Faites ceci, puis essayez votre script Python:

$ tr -d '\r' < test.py > newtest.py

Ceci supprime les retours à la ligne créés à partir de Windows

Pour en savoir plus, Supprimer les retours chariot Windows avec tr

2
Daniel