Python项目ModuleNotFoundError: No module named 'src' 问题求助
模块导入错误求助
项目目录结构
easylaw-api/ │ ├── src/ │ ├── api/ │ │ ├── main.py │ │ ├── __init__.py │ │ ├── models/ │ │ │ ├── codes.py │ │ │ └── __init__.py │ │ │ │ │ ├── routers/ │ │ │ └── __init__.py │ │ │ │ │ └── services/ │ │ ├── codes_service.py │ │ └── __init__.py │ │ │ ├── config/ │ │ ├── doNothing.py │ │ ├── supabase_client.py │ │ └── __init__.py
报错信息
Traceback (most recent call last): File "easylaw-api/src/api/main.py", line 3, in from routers import ( File "easylaw-api/src/api/routers/codes.py", line 2, in from services import codes_service File "easylaw-api/src/api/services/codes_service.py", line 7, in from src.config.doNothing import doNothing ModuleNotFoundError: No module named 'src'
问题说明
运行代码时触发上述ModuleNotFoundError,错误来自codes_service.py里的导入语句from src.config.doNothing import doNothing。我知道这和相对导入规则有关,但试了from ..config.doNothing import doNothing这类写法都无效,求可行的解决办法。
解决方法
1. 修正相对导入层级
codes_service.py位于src/api/services/,要导入src/config/下的模块,需要往上跳两级目录,所以用三级相对导入:
from ...config.doNothing import doNothing
- 注:每个
..表示向上跳转一级目录,从services/到src/需要先到api/(一级),再到src/(二级),因此用...。
2. 把项目根目录加入Python搜索路径
运行代码前,将easylaw-api目录添加到PYTHONPATH,让Python能识别src作为顶级模块:
- Linux/macOS:
export PYTHONPATH="/绝对路径/easylaw-api:$PYTHONPATH" python src/api/main.py
- Windows:
set PYTHONPATH=C:\绝对路径\easylaw-api;%PYTHONPATH% python src/api/main.py
- 应急方案(代码内添加):在
main.py最顶部加入以下代码,临时扩展路径:
import sys import os sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../../')))
3. 以包的形式运行代码
确保所有目录都存在__init__.py(你的项目已满足),从easylaw-api根目录执行:
python -m src.api.main
这种方式会自动将项目根目录纳入模块搜索路径,from src.config.doNothing import doNothing即可正常生效。
内容的提问来源于stack exchange,提问作者Moncef Moussaoui
相关产品推荐
相关产品推荐

