给定一组python程序:
/tool/a.py
/tool/b.py
/tool/c.py
/tool/d.py
...
它们存储在共享网络目录中,在混合环境(Solaris 和不同风格的 Linux)中执行,并且都需要特定的 python 版本,该版本可能不在用户 $PATH 中,并且可能不会安装在同一位置不同类型的机器。
程序如何指定要使用的 python 解释器?
我考虑过的替代方案:
每个 python 程序中的一个 shebang,引用一个 python 包装器,该包装器为当前类型的机器启动一个适当的 python 解释器。但是 execve 不允许将包装器可执行文件实现为 shell 脚本,并且为每台机器编译本机可执行文件需要大量维护。
为每个 python 程序制作一个启动 shell 脚本。所有的 shell 脚本可能共享相同的逻辑来选择 python 解释器,但如果可能的话,我想避免为每个 python 程序使用单独的 shell 脚本。
进行某种 hack 以使每个程序都可以作为 shell 脚本和 python 程序运行,类似于:
"""exec" /tool/python_wrapper "$0" "$@" """#" def foo(): print "foo" foo()
你还有其他想法吗?