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

Python项目中持续出现ModuleNotFoundError: No module named 'src'的解决求助

Python项目中持续出现ModuleNotFoundError: No module named 'src'的解决求助

项目结构

我正在开发一个Python项目,结构如下:

/
├── src/
│   ├── __init__.py
│   ├── afrr/
│   │   ├── __init__.py
│   │   ├── dumper.py
│   │   └── cleaner.py
│   ├── config.py
│   ├── tests/
│   │   ├── afrr/
│   │   │   ├── __init__.py
│   │   │   └── test_afrr_dumper.py

相关代码片段

test_afrr_dumper.py 用于测试 afrr/dumper.py 中的 dump_afrr_data 函数,核心代码如下:

src/afrr/dumper.py

import os
import pandas as pd
from datetime import datetime
from src.config import PROCESSED_DIR  # 确保PROCESSED_DIR在src/config.py中定义

src/tests/afrr/test_afrr_dumper.py

from afrr.dumper import dump_afrr_data
from src.config import PROCESSED_DIR

遇到的问题

当我用 pytest 或直接通过Python运行测试时,总会触发以下错误:

ModuleNotFoundError: No module named 'src'

已尝试的解决方法

我试过以下几种方案,但问题依然存在:

  • 设置PYTHONPATH:
    在命令行执行:

    set PYTHONPATH=src
    

    用 echo %PYTHONPATH% 验证路径已生效,但运行测试时错误依旧:

    pytest src/tests/afrr/test_afrr_dumper.py
    
  • 添加__init__.py文件:
    已经在以下目录添加了__init__.py,确保它们被识别为Python包:

    src/
    src/afrr/
    src/tests/afrr/
    
  • 将项目作为可编辑包安装:

    • 创建了setup.py文件:
      from setuptools import setup, find_packages
      
      setup(
          name="p",
          version="0.1",
          packages=find_packages(where="src"),
          package_dir={"": "src"},
          install_requires=[
              "pandas>=1.0.0",
          ],
      )
      
    • 用以下命令安装项目:
      pip install -e .
      
  • 移动测试文件位置:
    将test_afrr_dumper.py移动到src/根目录下,然后运行:

    pytest src/test_afrr_dumper.py
    

    还是遇到相同的ModuleNotFoundError错误。


预期行为

src目录应该被识别为项目的根包,test_afrr_dumper.py中的导入语句(比如from src.config import PROCESSED_DIR)应该能正常解析,无需额外配置。


实际行为

尽管尝试了以上所有方法,Python始终无法将src识别为有效模块,持续抛出ModuleNotFoundError: No module named 'src'。


环境详情

  • 操作系统:Windows 10
  • Python版本:3.12.8
  • 虚拟环境:使用python -m venv创建的venv
  • 已安装依赖:
    • pandas
    • pytest
    • 其他Python标准库

我的疑问

  1. 该如何正确配置项目,让src被当作导入的根模块?
  2. 在Python包/模块解析逻辑上,我遗漏了哪些关键点?
  3. 有没有不需要手动设置PYTHONPATH的、更结构化的永久修复方案?

备注:内容来源于stack exchange,提问作者PhillyVanilly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:49:33