脚本找不到Python3

时间:2020-03-05 19:24:52

标签: python-3.x macos shebang

我正在尝试学习一些Python3,因此,首先要做的是:Hello World。但是就这么简单,我在Shebang参考资料的第1行上度过了一段糟糕的时光。我在运行Mac 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')'

嗯。找不到环境。好的,我将在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

是的,就在那里,就在我说过他们将在Shebang线上的位置。 / usr / bin /

第二章

一遍又一遍地尝试之后,我决定尝试一些不同的尝试。我转向运行Debian GNU / Linux的Raspberry Pi。我注意到,它的/ usr / bin /目录中也安装了Python3版本。我使用vim编写了以相同的shebang开头的相同的两行脚本:#!/ usr / bin / python3。 Chmod755。“ Hello World”。第一次尝试即可。

这两个系统之间有何不同?一切都在Raspberry Pi中按预期进行。 Mac怎么了?我应该在Mac上哪里寻找解释程序找不到Python3的原因?

感谢衰老与我同在, 保罗

1 个答案:

答案 0 :(得分:0)

经过所有这些以及您所有的出色输入,事实证明MacOs系统上的脚本文件已使用BOM保存为UTF-8。这足以使脚本的第一行“ Shebang”对口译员来说是难以辨认的。将文件保存为UTF-8 no BOM编码后,它可以按预期工作。