运行python的子进程导致导入错误

时间:2011-12-04 18:54:56

标签: python subprocess pythonpath

我正在尝试从python程序中运行python脚本,方法是从子进程中将其踢出(原因是主程序必须在脚本运行时退出,并结合使用wx.CallAfter和Close)。但是当脚本运行时,我在第1行遇到ImportError: No module named os的错误,这让我觉得它与PythonPath有关,但是我可以从终端运行脚本。

为什么脚本在以这种方式运行时看不到任何核心模块?

编辑: 有问题的一行是:

wx.CallAfter(subprocess.Popen,'python %s "%s" %s %s'%(os.path.join(BASE_DIR,"updatecopy.py"),BASE_DIR,pos[0],pos[1]),shell=True)

BASE_DIR就是脚本所在的目录。

1 个答案:

答案 0 :(得分:0)

也许您可以使用os.execv代替Popen。

来自os/python docs

  

这些功能都执行新程序,替换当前进程;他们不回来。在Unix上,新的可执行文件被加载到当前进程中,并且将具有与调用者相同的进程ID。错误将报告为OSError异常。

强调我的)