从不同的实例执行另一个Python实例

Dra*_*neh 3 python exec

我目前有一个脚本由一个程序执行,该程序包含自己的Python解释器.此版本不包含我需要的库,因此我使用os.exec对本地安装的2.7实例执行第二个脚本.

但是,第二个脚本在手动执行时工作正常,并且没有定义PYTHONPATH.如果我在执行包装器时记录PYTHONPATH的输出,并且在加载第二个脚本时,它们都将PYTHONPATH初始化为原始解释器,这也恰好是2.6实例.这显然让我相信我有一些环境变量被传递,我没有预料到,此外在其他2个系统上,这个设置按预期工作100%,而在这一个系统上,这种行为正在发生.有没有更简洁的方法我可以创建一个包装来调用第二个脚本?如果不是,我怎么能避免这种不必要的env变量传递.

unu*_*tbu 6

os.exec*命令有很多变种:

execl(file, *args)
execle(file, *args, env)
execlp(file, *args)
execlpe(file, *args, env)
execv(path, args)
execve(path, args, env)
execvp(file, args)
execvpe(file, args, env)
Run Code Online (Sandbox Code Playgroud)
  • l变体使用*args,v变体使用args.
  • p variants使用PATH环境变量来查找 file
  • evarients取代了环境.非e变体使用当前过程的env.

您可以使用其中一个e变体(例如os.execle)来控制传递给新进程的环境变量.