You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从另一个Python脚本运行Flask脚本时遇ModuleNotFoundError求助

Flask Module Not Found When Calling via subprocess (Works Directly in PyCharm)

这个问题的核心原因很明确:你用subprocess.call调用的Python解释器,和PyCharm右键运行app.py时使用的不是同一个环境。PyCharm默认会自动激活你项目配置的虚拟环境(比如venv),而直接用python命令调用时,系统会使用默认的全局Python解释器——这个全局环境里并没有安装Flask,所以才会抛出ModuleNotFoundError。

下面是几个针对性的解决方案:

1. 直接使用虚拟环境的Python解释器路径

最稳妥的办法是明确指定项目虚拟环境中的Python执行文件路径,而不是依赖系统默认的python命令。

假设你的项目虚拟环境放在项目根目录的venv文件夹下:

  • Windows系统的路径通常是:venv\Scripts\python.exe
  • Linux/macOS系统的路径通常是:venv/bin/python

修改你的runner.py代码,替换python为这个具体路径:

import os
import subprocess
from your_module import Settings, get_driver_file_path

# 构建虚拟环境的Python路径(根据你的系统调整)
venv_python_path = os.path.join(Settings.TestProjectPath, "venv", "Scripts", "python.exe")
# 如果你是Linux/macOS,替换成下面这行:
# venv_python_path = os.path.join(Settings.TestProjectPath, "venv", "bin", "python")

# 调用app.py时使用虚拟环境的Python
subprocess.call([venv_python_path, get_driver_file_path(Settings.TestProjectPath)])

2. 传递当前环境变量给subprocess

当你在PyCharm中运行runner.py时,PyCharm已经帮你激活了项目的虚拟环境,对应的环境变量(比如PATH、PYTHONPATH)都指向了虚拟环境的资源。你可以把这个环境变量传递给subprocess,让它使用和当前进程相同的Python环境:

import os
import subprocess
from your_module import Settings, get_driver_file_path

# 复制当前进程的环境变量(包含PyCharm激活的虚拟环境配置)
current_env = os.environ.copy()

# 调用时传入env参数
subprocess.call(
    ["python", get_driver_file_path(Settings.TestProjectPath)],
    env=current_env
)

3. 验证环境差异(排查用)

如果你不确定问题出在哪,可以先在subprocess中打印Python的路径和包搜索路径,对比直接运行app.py时的输出:

在runner.py中添加这段测试代码:

import subprocess
subprocess.call(["python", "-c", "import sys; print('Python路径:', sys.executable); print('包搜索路径:', sys.path)"])

然后对比PyCharm中直接运行app.py时,在代码开头添加的输出:

import sys
print('Python路径:', sys.executable)
print('包搜索路径:', sys.path)

两者的差异会直接告诉你为什么找不到Flask——大概率是Python解释器路径不同,或者sys.path里没有包含虚拟环境的site-packages目录。

内容的提问来源于stack exchange,提问作者David Tunnell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:51:12