问题描述
在做前端登录成功后使用subprocess.run跳转运行另一python文件时,总是报错:ModuleNotFoundError: No module named xxx,可是直接运行该python文件时运行正常。其中关键代码如下:
subprocess.run(['python', 'run.py'], check=True)
问题解决
这是在使用subprocess.run时
,它可能无法访问相同的环境或Python路径,这会导致ModuleNotFoundError。解决代码如下:
env = os.environ.copy()
env['PYTHONPATH'] = os.path.dirname(os.path.abspath('D:/project/.venv/scripts/python.exe'))
# 注意,上述路径填写解释器所在虚拟环境,以自己实际为准
python_executable = sys.executable
result = subprocess.Popen([python_executable, 'run.py'], env=env)