最简单的解决方案显然是您不想要的,即为每个 python 脚本创建一个新的脚本文件。
但是,您可以通过让 python 脚本调用自身来做大致等效的操作。当然,您需要在第二次调用时通知它不要这样做,否则您将最终得到无限(尾)递归。
以下小“模块”(您可以直接导入,但您应该在启动时立即执行,然后再执行其他操作)将检查环境变量SETENV
是否已设置,如果是,它将重新发出 python 命令(尽其所能,所以如果它不仅仅是一个简单的脚本执行,它可能会出错)在采购名为SETENV
. 它缺乏大量的错误检查,不应该被认为是生产就绪的;而是一个概念验证:
# file env_set.py
import os
import sys
if sys.argv[0] and "SETENV" in os.environ:
setenv = os.environ["SETENV"]
del os.environ["SETENV"]
os.execvp("bash", ["bash", "-c",
"source " + setenv + "; exec python " + sys.argv[0] + ' "${@}"',
"--"] + sys.argv[1:])
和一个小测试:
# file test_env_set.py
import env_set
import os
import sys
for name in sys.argv[1:]:
if name in os.environ:
print(name + "=" + os.environ[name])
else:
print("Undefined: " + name)
# file setenv.sh
export the_answer=42
$ python test_env_set.py SETENV the_answer
Undefined: SETENV
Undefined: the_answer
$ SETENV=setenv.sh python test_env_set.py SETENV the_answer
Undefined: SETENV
the_answer=42