Линия Шебанга для питона вообще не работает - PullRequest
0 голосов
/ 24 октября 2018

Это сложная проблема.Есть несколько тем для этого.Но ни один из них мне не помогает.

Я добавил #!/usr/bin/env python3 (или python) и запустил test.py, он сообщил, что zsh: command not found: test.py.Я был сбит с толку.Я пробовал много форм Шебанга.Можете ли вы мне помочь?

В следующих отчетах об ошибках вы можете увидеть, что отчеты отличаются при запуске по HOME-пути и по родительскому пути test.py

[Scripts] test.py                                                     20:51:04
zsh: command not found: test.py
[Scripts] cd ~                                                        20:51:33
[~] Scripts/test.py                                                   20:51:43
env: python\r: No such file or directory

Это не такдо тех пор, как я понял значение линии Шебанг.Я надеюсь, что это может сделать мою жизнь проще, никогда не писать python до test.py.

Ниже приведен тестовый код.

#!/usr/bin/env python3

import argparse

parser = argparse.ArgumentParser(description='test')
parser.add_argument('-o', dest='what', action='store', default='hello', metavar='WHAT')

args = parser.parse_args()
print(args.what)

Ниже приведена конфигурация.

PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:$PATH"

А в терминале,

[~] which python                                                      20:36:55
python: aliased to python3
[~] which python3                                                     20:36:57
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
ls -l
-rwxrwxrwx@ 1 william  staff   273 10 24 20:51 test.py

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Предполагая, что каталог test.py не находится в вашем PATH, вам нужно будет использовать либо относительный, либо абсолютный путь и убедиться, что скрипт имеет права на выполнение.

$ chmod u+x test.py
$ ./test.py

Есливыполнить правильно.


С ошибкой env: python3\r: No such file or directory: файл использует символы новой строки "CRLF": \r\n, в то время как ожидается один \n.Таким образом, zsh разделяется на первый \n, оставляя линию шебанга #!/usr/bin/env python3\r, с python3\r, очевидно, не в вашем PATH.Если вы измените окончания строки на unix2dos test.py, это должно решить проблему согласно этому ответу .

0 голосов
/ 24 октября 2018

После добавления shebang в ваш файл python:

  • Сделать файл исполняемым chmod +x test.py
  • Запустить файл, пока в каталоге он существует ./test.py
...