如何让脚本的#! shebang适配Python安装路径不同的各类系统
Python脚本跨系统适配Shebang行解决方案
原有硬编码路径的#!/usr/bin/python3.6只能匹配固定路径下的Python 3.6解释器,更换系统后很容易因为路径不匹配无法运行。
最优适配方案
直接将脚本首行替换为:
#!/usr/bin/env python3.6
原理说明
/usr/bin/env是Unix-like系统默认自带的工具,会自动在当前用户的PATH环境变量的所有路径中搜索匹配python3.6的可执行文件。你提到的三个路径:
/usr/bin/python3.6/tools/bin/python3.6/usr/local/bin/python3.6
默认都会被加入系统全局PATH变量,env可以自动识别到对应的解释器位置,不需要手动硬编码路径。
注意事项
- 提前确认目标系统已经安装Python 3.6,且存在
python3.6可执行命令,若系统未安装对应版本会直接报错 - 绝大多数Unix-like系统的
env默认路径都是/usr/bin/env,如果遇到特殊系统可以执行which env确认路径后再调整首行 - 如果需要兼容没有
python3.6别名的环境,可以把首行改为#!/usr/bin/env python3,但需要提前验证脚本语法兼容目标系统的Python 3大版本
内容的提问来源于stack exchange,提问作者my_question
相关产品推荐
相关产品推荐

