hash-bang行应选用何种Python可执行文件?Linux环境下Python 3.x程序的shebang配置疑问
在Linux中Python 3脚本的Hash-Bang行选择指南
嘿,这个问题在Linux Python开发者圈子里其实挺有代表性的,我来给你理清楚来龙去脉~
核心结论
如果你的程序是专门针对Python 3.x编写的,直接用 #!/usr/bin/env python3 就对了,这是当前最稳妥的选择。
为什么选python3而不是python?
- 虽然现在很多新的Linux发行版已经把
python软链到Python 3了,但依然有不少老的服务器系统(比如部分Ubuntu LTS旧版本、CentOS 7等)还保留着python指向Python 2.x的传统。用python的话,你的Python 3代码很可能因为语法差异(比如print函数、字符串编码)直接报错跑不起来。 python3是Linux系统中专门标识Python 3系列的标准命令,只要系统装了Python 3,这个命令就一定存在,指向的版本明确,不会有歧义。
你记不清的“不用python3”的理由,大概率是这些老情况
早年确实有一些场景会倾向于用python,但现在基本都过时了:
- 极端老旧的系统:比如2017年之前的某些轻量发行版可能默认只装Python 2,没装
python3。但现在Python 2已经停止维护多年,主流发行版都默认预装Python 3,这种情况几乎绝迹了。 - 兼容Python 2和3的脚本:如果你的脚本是特意写的兼容双版本,那可能会用
python,但你明确说写的是Python 3.x程序,这个前提就不成立了。
额外的最佳实践
- 如果你的脚本依赖特定版本的Python 3(比如需要3.8及以上),可以用
#!/usr/bin/env python3.8,但这会降低兼容性,只适合你能控制目标环境的场景。 - 脚本写完后别忘了执行
chmod +x your_script.py,赋予可执行权限,这样才能直接用./your_script.py运行,验证hash-bang行是否正常工作。
内容的提问来源于stack exchange,提问作者larsb
相关产品推荐
相关产品推荐

