Skip to main content
 首页 » 编程设计

python之如何使用合适的 python 版本启动 python 程序

2025年05月04日14soundcode

给定一组 python 程序:

/tool/a.py 
/tool/b.py 
/tool/c.py 
/tool/d.py 
... 

存储在共享网络目录中,在混合环境(Solaris 和不同版本的 Linux)中执行,并且都需要特定的 python 版本,该版本可能不在用户 $PATH 中,也可能不会安装在同一个目录中在不同类型的机器上的位置。

程序如何指定要使用的 python 解释器?

我考虑过的备选方案:

  1. 每个 python 程序中的一个 shebang,引用一个 python 包装器,该包装器为当前类型的机器启动一个适当的 python 解释器。但是 execve 不允许将包装可执行文件实现为 shell 脚本,并且为每台机器编译 native 可执行文件需要大量维护。

  2. 为每个 python 程序制作一个启动 shell 脚本。所有 shell 脚本在选择 python 解释器时可能共享相同的逻辑,但我希望尽可能避免为每个 python 程序使用单独的 shell 脚本。

  3. 进行某种破解,使每个程序都可以同时作为 shell 脚本和 python 程序运行,类似于:

"""exec" /tool/python_wrapper "$0" "$@" """#" 
def foo(): 
print "foo" 
foo() 

你还有其他想法吗?

请您参考如下方法:

我知道这不是您正在寻找的答案,但我只是确保 python 可执行文件位于 PATH 中,然后使用 env 找到它们。从长远来看,我认为这会减少很多维护和头痛。例如

#!/usr/bin/env python2.5 
print "Hello from python 2.5!" 

#!/usr/bin/env python2.6 
print "Hello from python 2.6!" 

#!/usr/bin/env python2.7 
print "Hello from python 2.7!"