Сценарий Python дает `: нет такого файла или каталога`

У меня есть несколько скриптов python, которые работают отлично, но один скрипт (с сегодняшнего утра) начал давать мне эту ошибку, если я попытаюсь запустить ее из bash:

: Данный файл или каталог отсутствует

Я могу запустить «сломанный» скрипт, выполнив python script_name.py и немного python script_name.py общая идея, которую я выбрал, состояла в том, что, возможно, мое окончание строки hashbang было изменено (тихо), поэтому я посмотрел на конец строки рабочего скрипта и сломанного скрипта через опцию :set list в VI, как указано в этом вопросе, -> Просмотр строк в текстовом файле

Кажется, что оба файла заканчиваются с использованием одного и того же символа (a $ ), поэтому я как бы не понимаю, как исходить отсюда. В частности, как на самом деле «видеть» строку, заканчивающуюся в случае, если set list не был правильным методом.

PS: Скрипт является исполняемым, и shebang там, я сказал, что это только этот 1 скрипт работал отлично до выходных, но он начал давать мне эту ошибку с сегодняшнего утра.

— редактировать: —

Запуск скрипта через dos2unix заставит его работать снова, но я хотел бы узнать о любом способе визуализации строки, заканчивающейся как-то в VI (M), или почему Geany каким-то образом преобразовал окончание строки (поскольку я никогда не работаю над dos / windows system).

  • Повторное использование кода из разных IPython-ноутбуков
  • Могу ли я заставить pip переустановить текущую версию?
  • Опыт Python Git?
  • Возможно ли перемещать / объединять сообщения между очередями RabbitMQ?
  • GAE (Python) Менеджер облачных ресурсов - разрешение отклонено
  • Время икры иглы увеличивается экспоненциально при использовании соединения
  • 4 Solutions collect form web for “Сценарий Python дает `: нет такого файла или каталога`”

    Из вышеприведенных комментариев выглядит, что у вас есть окончания линии dos, и поэтому строка hashbang неправильно обрабатывается.

    Стиль окончания строки не отображается с помощью :set list в Vim, потому что эта опция используется только при чтении / записи файла. В конце строки строки всегда есть строки-окончания. Стиль окончания строки, используемый для файла, хранится в опции Vim per-file, странно называемой fileformat .

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

     :set fileformat :set ff 

    Он покажет dos или unix . Вы хотите unix , конечно ;-).

    Чтобы быстро его изменить, вы можете сохранить файл с помощью:

     :w ++ff=unix 

    Или, если вы предпочитаете:

     :set ff=unix 

    А затем сохраните файл в обычном режиме.

    Так что посмотрите все детали gory :help fileformat :help file-formats и :help fileformats

    Лично я считаю это неправильным, используя прямой путь к интерпретатору python. Поскольку вы не используете платформу Windows, у вас должна быть программа env, обычно в / usr / bin (/ usr / bin / env). Попробуйте использовать следующий shebang:

     #!/usr/bin/env python 

    Различные дистрибутивы хранят двоичные файлы python в / bin или / usr / bin (или некоторые странные местоположения), и это делает ваш скрипт независимым от конфигурации (насколько это возможно, здесь мы имеем возможность, что env хранится в другом месте, тем не менее – меньше возможно, что env не находится в / usr / bin, чем этот python ошибочен).

    У меня была подобная проблема (если не совсем то же самое), и это сработало для меня.

    Кроме того, у меня установлены оба интерпретатора python (2.7.x и 3.x), поэтому мне нужно использовать аргумент «python3» для env. AFAIR обычно передает разные имена в разные двоичные файлы, поэтому «env python» будет запускать python2.7 в моей системе, «env python3» (также python33, или smth), будет запускать p3k и «env python2» (также python27, и т. д.) запустит python 2.7.x. Объявить, какая версия интерпретатора должна использоваться, также кажется хорошей идеей.

    Вы также можете использовать команду dos2unix для преобразования формата файла

    dos2unix

    Это помогло мне запустить скрипты python

    Обычно это происходит, когда мы открываем файлы в окнах, делаем изменения и сохраняем их. если вы откроете файл, найдите символы ^ M в конце каждой строки

    благодаря

    Я столкнулся с этой проблемой, отредактировав свой код в Windows, проверив его с помощью git и проверив его на Linux.

    Моим решением было: сказать git «Делать правильную вещь». Я выпустил эту команду в окне Windows:

     git config --global core.autocrlf true 

    Изменены файлы и проверили их; вуаля, нет такой проблемы.

    Как обсуждалось в документации Git .

    Python - лучший язык программирования в мире.