Такого файлу чи каталогу немає, але я його бачу!


11

Я намагаюся запустити скрипт python на безголовому PI Raspberry, використовуючи 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 shebang, тими ж дозволами та з використанням того ж користувача pi, і це працює.

Я також роблю a, lsі я бачу файл, тому я не знаю, чому він не запуститься.


1
Ви редагували `areadetect_movie_21.py 'в Windows? Якщо ви бачили це як askubuntu.com/a/372691 .
Аркадіуш Драбчик

так, у затемненні, чому?
реггі

Я відредагував свій коментар після того, як додав його. Дивіться це як askubuntu.com/a/372691 .
Аркадіуш Драбчик

так, так, це спрацювало, спасибі! чи можете ви перетворити ваш коментар у відповідь, щоб я міг його прийняти.
реггі

добре, я це зробив :)
Аркадіуш Драбчик

Відповіді:


28

Від AskUbuntu , відповідь Gilles :

Якщо ви бачите помилку ": Немає такого файлу чи каталогу" (без нічого перед двокрапкою), це означає, що ваша лінія shebang має повернення каретки в кінці, імовірно, тому, що вона була відредагована в Windows (яка використовує CR, LF як роздільник ліній). Символ CR змушує курсор повернутися до початку рядка після того, як оболонка надрукує початок повідомлення, і тому ви побачите лише частину після CR, яка закінчує рядок інтерпретатора, що є частиною повідомлення про помилку.

Видаліть CR: лінія shebang повинна мати закінчення рядка Unix (лише для передачі рядків ). Сам Python дозволяє закінчити рядки CRLF, тому символи CR в інших рядках не зашкодять. Сценарії оболонки з іншого боку не повинні містити символів CR.

Щоб видалити закінчення рядків Windows, ви можете використовувати dos2unix :

sudo dos2unix / usr / local / bin / casperjs

або sed:

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

Якщо ви маєте редагувати сценарії в Windows, використовуйте редактор, який справляється з закінченнями рядків Unix (тобто щось менш мертве, ніж блокнот), і переконайтеся, що він налаштований для запису закінчень рядків Unix (тобто лише LF) під час редагування файлу Unix.


1
Я відкрив файл, на пі, через ssh в блокноті на своєму ПК з Windows і видалив повернення каретки, і він працює :) Дякую дуже.
реггі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.