Python部署和/ usr/bin/env可移植性

cdl*_*ary 13 python environment executable shebang

在我所有的可执行Python脚本的开头,我把shebang行:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

我在一个env python产生Python 2.2环境的系统上运行这些脚本.我的脚本很快就会失败,因为我手动检查兼容的Python版本:

if sys.version_info < (2, 4):
    raise ImportError("Cannot run with Python version < 2.4")
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我不想在每个可执行文件上更改shebang行; 但是,我没有机器的管理访问权限来更改结果,env python我不想强制使用特定版本,如:

#!/usr/bin/env python2.4
Run Code Online (Sandbox Code Playgroud)

我想避免这种情况,因为系统可能有比Python 2.4更新的版本,或者可能有Python 2.5但没有Python 2.4.

什么是优雅的解决方案?

[编辑:]我没有具体提出问题 - 我想让用户在没有手动配置的情况下执行脚本(例如路径更改或符号链接~/bin并确保您的PATH ~/bin在Python 2.2路径之前).也许需要一些分发工具来防止手动调整?

小智 8

"env"只是执行它在PATH env var中找到的第一个东西.要切换到不同的python,请在调用脚本之前将该python可执行文件的目录添加到路径中.