Mac下通过Shebang运行Python文件报错语法错误,问题出在哪?
Mac上是否必须用python命令运行Python文件?
答案是不需要——你完全可以通过设置shebang头+赋予执行权限的方式直接运行Python脚本,但你的尝试里犯了两个关键错误,导致脚本被当成shell命令执行,从而抛出语法错误。
问题根源:Shebang写法错误
你写的shebang是:
# !/Users/Chois/.pyenv/shims python
这里有两个致命问题:
- #和!之间不能有空格:shebang的标准格式是
#!/路径,#!是一个整体标记,系统靠这个识别脚本的解释器。如果写成# !,系统会把这一行当成普通的Python注释,不会触发解释器指定逻辑。 - 路径错误:你没有使用
which python返回的完整路径/Users/Chois/.pyenv/shims/python,而是在路径后加了空格拆分,这会被系统当成“执行/Users/Chois/.pyenv/shims程序,参数是python”,显然不符合预期。
因为shebang失效,系统默认用当前shell(比如bash)去解析你的脚本,shell自然无法理解print("a")这种Python语法,所以才会报syntax error near unexpected token "a"。
正确的解决步骤
- 修正shebang:把aa.py的第一行改成以下两种格式之一:
- 写死绝对路径(和
which python返回结果一致):#!/Users/Chois/.pyenv/shims/python - 通用写法(自动查找环境中的Python,不用写死路径):
#!/usr/bin/env python
- 写死绝对路径(和
- 确保执行权限:如果之前已经设置过可以跳过,否则执行:
chmod 755 aa.py - 运行脚本:
这时候脚本就会被正确交给指定的Python解释器执行,输出./aa.pya。
内容的提问来源于stack exchange,提问作者user3595632
相关产品推荐
相关产品推荐

