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
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
).
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