我目前有一个脚本由一个程序执行,该程序包含自己的Python解释器.此版本不包含我需要的库,因此我使用os.exec对本地安装的2.7实例执行第二个脚本.
但是,第二个脚本在手动执行时工作正常,并且没有定义PYTHONPATH.如果我在执行包装器时记录PYTHONPATH的输出,并且在加载第二个脚本时,它们都将PYTHONPATH初始化为原始解释器,这也恰好是2.6实例.这显然让我相信我有一些环境变量被传递,我没有预料到,此外在其他2个系统上,这个设置按预期工作100%,而在这一个系统上,这种行为正在发生.有没有更简洁的方法我可以创建一个包装来调用第二个脚本?如果不是,我怎么能避免这种不必要的env变量传递.
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环境变量来查找 fileevarients取代了环境.非e变体使用当前过程的env.您可以使用其中一个e变体(例如os.execle)来控制传递给新进程的环境变量.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |