分离测试文件与项目文件时出现ImportError问题排查
src布局Python项目导入错误:原因与解决方法
错误原因
Python的模块搜索路径未包含项目根目录test_project,导致无法识别src模块下的mod1。当运行测试文件时,Python只会从当前工作目录、标准库路径和PYTHONPATH指定的路径查找模块,而你的src目录不在这些搜索路径范围内,因此抛出导入错误。
无需绝对路径的解决方法
1. 可编辑模式安装项目(推荐)
这是Python项目最规范的处理方式,能让全局环境识别你的项目模块。
在**项目根目录test_project**下执行:
pip install -e .
安装完成后,无论从哪个目录运行测试文件,都能正常导入src下的模块。
2. 设置PYTHONPATH环境变量
将项目根目录添加到PYTHONPATH,告诉Python去哪里找你的模块:
- Windows(命令提示符):
set PYTHONPATH=%PYTHONPATH%;你的test_project绝对路径
- Windows(PowerShell):
$env:PYTHONPATH += ";你的test_project绝对路径"
- Linux/macOS:
export PYTHONPATH="$PYTHONPATH:/你的test_project绝对路径"
设置完成后直接运行测试文件即可。
3. 测试文件临时添加路径(快速临时方案)
在test_mod1.py开头添加代码,自动识别并添加项目根目录到搜索路径:
import sys from pathlib import Path # 自动获取项目根目录 project_root = Path(__file__).resolve().parent.parent sys.path.append(str(project_root)) from src import mod1 as m1 x,y = 3,4 print(m1.add(x,y))
这种方法不需要修改环境或安装,但属于临时方案,不推荐长期使用。
内容的提问来源于stack exchange,提问作者Still Learning
相关产品推荐
相关产品推荐

