这是一个棘手的问题。有几个主题。但是他们都没有帮助我。
我添加了#!/usr/bin/env python3
(或python),并运行test.py
,它报告了zsh: command not found: test.py
。我很困惑。我尝试了多种形式的shebang。你能帮我吗?
在以下错误报告中,您可以看到在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
自从我了解到shebang线的含义后不久。我希望它可以使我的生活变得轻松,不要在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
答案 0 :(得分:2)
假设test.py
的目录不在您的PATH
中,则需要使用相对路径或绝对路径,并确保脚本具有执行特权。
$ chmod u+x test.py
$ ./test.py
应该正确执行。
出现错误env: python3\r: No such file or directory
:文件正在使用“ CRLF”换行符:\r\n
,而单个\n
应该是。因此,zsh
在第一个\n
上拆分,留下了shebang行#!/usr/bin/env python3\r
,而python3\r
显然不在您的PATH
中。如果您更改以unix2dos test.py
结尾的行,则应该按照this answer来解决此问题。
答案 1 :(得分:0)
将shebang添加到您的python文件后:
chmod +x test.py
./test.py
时运行文件