Нет такого файла или каталога, но я вижу это!

11

Я пытаюсь запустить скрипт Python на Raspberry PI без головы, используя winSCP, и получаю следующее сообщение об ошибке:

Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.

Когда я пытаюсь запустить из терминала, я получаю:

: No such file or directory.

Я пробую аналогичный скрипт Python, в том же каталоге, с тем же шебангом Python, теми же разрешениями и с тем же пользователем пи, и это работает.

Я также делаю lsи вижу файл, поэтому не знаю, почему он не запустится.

Реджи
источник
1
Вы редактировали `areadetect_movie_21.py 'в Windows? Если вы видели это askubuntu.com/a/372691 .
Аркадиуш Драбчик,
да в затмении, почему?
Реджи
Я отредактировал свой комментарий после того, как добавил его. Смотрите это askubuntu.com/a/372691 .
Аркадиуш Драбчик
да да да это сработало, спасибо большое! Можете ли вы преобразовать свой комментарий в ответ, чтобы я мог принять его.
Реджи
хорошо, я сделал это :)
Arkadiusz Drabczyk

Ответы:

28

От AskUbuntu ответ от Жиля :

Если вы видите ошибку «: Нет такого файла или каталога» (без двоеточия), это означает, что ваша строка shebang имеет возврат каретки в конце, предположительно потому, что она была отредактирована в Windows (которая использует CR, LF как разделитель строк). Символ CR заставляет курсор возвращаться к началу строки после того, как оболочка напечатает начало сообщения, и поэтому вы можете увидеть только ту часть после CR, которая заканчивает строку интерпретатора, являющуюся частью сообщения об ошибке.

Удалите CR: строка shebang должна иметь конец строки Unix (только перевод строки). Сам Python допускает окончания строк CRLF, поэтому символы CR на других строках не помешают. Сценарии оболочки, с другой стороны, не должны содержать символов CR.

Чтобы удалить окончания строки Windows, вы можете использовать dos2unix :

sudo dos2unix / usr / local / bin / casperjs

или сед:

sudo sed -i -e 's / \ r $ //' / usr / local / bin / casperjs

Если вам необходимо отредактировать сценарии под Windows, используйте редактор, который справляется с окончаниями строк Unix (то есть с чем-то менее умопомрачительным, чем Notepad), и убедитесь, что он настроен на запись окончаний строк Unix (т.е. только LF) при редактировании файла Unix.

Аркадиуш Драбчик
источник
1
Я открыл файл, на пи, через ssh в блокноте на моем компьютере с Windows и удалил возврат каретки, и это работает :) Большое спасибо.
Реджи