【发布时间】:2023-03-12 16:56:01
【问题描述】:
我正在尝试学习一点 Python3,所以,首先要做的事情是:Hello World。但尽管很简单,但我在第 1 行(Shebang 参考)上度过了一段糟糕的时光。我在运行 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/
第二章
在一次又一次地踢这个之后,我决定尝试一些不同的东西。我通过 ssh 连接到运行 Debian GNU/Linux 的 Raspberry Pi。我注意到它的 /usr/bin/ 目录中也安装了一个 Python3 版本。我使用 vim 编写相同的两行脚本,以相同的 shebang 开头:#!/usr/bin/python3。 Chmod 755。“你好世界”。第一次尝试就成功了。
这两个系统有什么不同?在 Raspberry Pi 中,一切都按预期工作。 Mac 怎么了?我应该在 mac 上哪里查找解释器找不到 Python3 的原因?
感谢老去陪我, 保罗
【问题讨论】:
-
使用
python3 ./python_test-01.py有效吗? -
如果您是 Python 新手,请不要担心 shebang。您始终可以使用
python my_script.py运行您的脚本。 -
@Ed Ward,是的,可行,但我的目标是能够从具有脚本菜单的 SQLite 应用程序中启动此脚本,因此我不能依赖命令行前言。
-
您是否使用
Textedit来创建脚本?如果是这样,请务必在保存之前单击Format菜单选项,然后单击Make Plain Text。 -
另一个陷阱:
#!/usr/bin/env pythonX在通过 MacPorts 安装pythonX时从脚本菜单运行时失败。也可能影响其他类型的安装。env可以与内置 python 配合使用。
标签: python-3.x macos shebang