Flask子文件夹导入模块报ModuleNotFoundError,根目录可正常导入求助
Flask模块导入问题解决方案
针对你遇到的目录结构(root > app > views > tests)下,tests/test_data.py无法导入app.views.data的问题,给你几个实用解决办法:
手动添加项目根目录到Python路径
Python运行脚本时,只会把脚本所在目录和系统默认路径加入sys.path,根目录下的文件能成功导入是因为根目录在路径里,而tests目录不在。在test_data.py开头加入以下代码,把根目录添加到路径:import sys from pathlib import Path # 向上三级找到root目录(根据你的结构调整层级) root_dir = Path(__file__).parent.parent.parent sys.path.append(str(root_dir)) # 现在可以正常导入了 from app.views import data使用相对导入(包内场景)
因为tests是views的子目录,可尝试相对导入语法,前提是把tests当作包的一部分运行(比如用模块方式启动):from .. import data运行时要用
python -m app.views.tests.test_data,直接双击或python test_data.py会报错。配置PYTHONPATH环境变量
运行测试脚本前,把项目根目录加到环境变量里:- Linux/macOS终端:
export PYTHONPATH=/绝对路径/root:$PYTHONPATH python app/views/tests/test_data.py - Windows命令行:
set PYTHONPATH=C:\绝对路径\root;%PYTHONPATH% python app\views\tests\test_data.py
- Linux/macOS终端:
用测试框架自动处理路径
如果这是测试文件,用pytest等框架的话,直接在项目根目录下执行:pytest app/views/tests/test_data.pypytest会自动把根目录加入Python路径,无需额外配置。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

