Скрипт не может найти Python3 - PullRequest
2 голосов
/ 05 марта 2020

Я пытаюсь немного узнать Python3, поэтому обо всем по порядку: Hello World. Но как бы просто это ни было, у меня ужасное время со строкой 1, ссылкой на Шебанг. Я создаю следующий скрипт на моем ноутбуке под управлением Ma c Os 10.15.3

#!/usr/bin/env python3
print('Hello World')

Я сохраняю его как python_test-01.py, делаю скрипт исполняемым и пытаюсь запустить его

Emonda:Scripts paul$ chmod 755 python_test-01.py 
Emonda:Scripts paul$ ls -l

-rwxr-xr-x@ 1 paul  staff   47 Mar  5 13:07 python_test-01.py

Emonda:Scripts paul$ ./python_test-01.py 
./python_test-01.py: line 1: #!/usr/bin/env: No such file or directory
./python_test-01.py: line 2: syntax error near unexpected token `'Hello World''
./python_test-01.py: line 2: `print('Hello World')'

Хмм. Не могу найти env. Хорошо, я буду использовать прямой путь в строке shebang вместо env. Я редактирую скрипт так, чтобы он читал

#!/usr/bin/python3
print('Hello World')

и запускал его

Emonda:Scripts paul$ ./python_test-01.py 
./python_test-01.py: line 1: #!/usr/bin/python3: No such file or directory
./python_test-01.py: line 2: syntax error near unexpected token `'Hello World''
./python_test-01.py: line 2: `print('Hello World')'

Теперь он также не может найти Python3. Поэтому я оглядываюсь вокруг, чтобы убедиться, что на самом деле у меня установлены env и python3 и где они находятся.

Emonda:Scripts paul$ cd /usr/bin/
Emonda:bin paul$ pwd
/usr/bin
Emonda:bin paul$ whereis env
/usr/bin/env
Emonda:bin paul$ whereis python3
/usr/bin/python3

Да, они там, где я и сказал, что они будут в линии Шебанга. / usr / bin /

Вторая глава

После того, как я повторяю это снова и снова, я решаю попробовать что-то другое. Я sh перешел на мой Raspberry Pi, работающий под Debian GNU / Linux. Я отмечаю, что в каталоге / usr / bin / также установлена ​​версия Python3. Я использую vim для написания того же двухстрочного скрипта, начинающегося с одного и того же шебанга: #! / Usr / bin / python3. Chmod 755. «Привет, мир». Это работает с первой попытки.

Что же отличается между этими двумя системами? Все работает как положено в Raspberry Pi. Что случилось с Ма c? Где я должен искать ма c, чтобы найти причину, по которой переводчик не может найти Python3?

Спасибо, стареющий за то, что остался со мной, Пол

1 Ответ

0 голосов
/ 07 марта 2020

После всего этого и всего вашего замечательного вклада оказывается, что файл сценария в системе MacOs был сохранен в UTF-8 с BOM. Этого было достаточно, чтобы сделать первую строку сценария, Шебанг, неразборчивой для переводчика. После сохранения файла в кодировке UTF-8 без спецификации все заработало как положено.

...