我正在尝试从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就是脚本所在的目录。
答案 0 :(得分:0)
也许您可以使用os.execv
代替Popen。
这些功能都执行新程序,替换当前进程;他们不回来。在Unix上,新的可执行文件被加载到当前进程中,并且将具有与调用者相同的进程ID。错误将报告为OSError异常。
(强调我的)