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

Python跨目录导入带依赖文件报错,求最佳解决方法?

解决ModuleNotFoundError: No module named 'variable'的最佳方法

错误根源

当从tests/module/test_main.py导入src.module.main时,Python会以项目根目录作为模块查找基准路径。而main.py里的from variable import c是相对当前文件所在目录的导入,此时Python在项目根目录下找不到variable.py,因此抛出模块未找到的错误。

最佳解决方法

方法1:改用绝对导入(推荐,兼容性更强)

修改src/module/main.py的导入语句为绝对路径导入:

from src.module.variable import c

def add(a, b):
    return a + b + c

if __name__ == "__main__":
    # 直接运行main.py时,自动把项目根目录加入查找路径
    import sys, os
    sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
    print(add(1, 2))

修改后:

  • 运行test_main.py时能正常找到variable模块
  • 直接运行main.py也能正常执行;如果不想在main.py里加路径代码,也可以在项目根目录下执行命令:python -m src.module.main

方法2:改用相对导入

修改src/module/main.py的导入语句为相对当前包的导入:

from .variable import c

def add(a, b):
    return a + b + c

if __name__ == "__main__":
    print(add(1, 2))

此时:

  • 运行test_main.py可直接正常执行
  • 直接运行main.py时,必须在项目根目录下执行命令:python -m src.module.main,不能用python src/module/main.py(相对导入无法在顶级脚本中直接使用)

额外优化(可选)

如果是长期维护的项目,建议在项目根目录下创建setup.py或pyproject.toml配置文件,然后执行pip install -e .将项目安装为可编辑模式。这样所有模块会被Python全局识别,无需手动修改sys.path。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:30:04