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

Python 3.10下ModuleNotFoundError: No module named 'DIXLogger'包导入问题求助

解决Python 3.10中跨目录模块导入问题

这个问题我之前也碰到过,本质是Python找不到你的DIXLogger模块所在的路径——当你直接运行Infra/__main__.py时,Python的默认搜索路径是Infra目录,而上层的DIXLogger不在这个路径里,所以才会报ModuleNotFoundError。给你几个实用的解决办法:

方法1:动态添加项目根目录到Python路径

在__main__.py的最开头加入以下代码,把项目根目录(MainProjectDIX)手动添加到Python的搜索路径中:

import sys
from pathlib import Path

# 获取当前脚本的父目录的父目录,也就是项目根目录
project_root = Path(__file__).parent.parent
sys.path.append(str(project_root))

# 现在就能正常导入了
from DIXLogger.dix_logger import DIXComLogger

这种方法的好处是不需要修改系统环境变量,代码本身就能适配路径问题。

方法2:使用相对导入(需按包方式运行)

如果你的项目是作为一个Python包来设计的,可以用相对导入语法。修改__main__.py中的导入语句:

from ..DIXLogger.dix_logger import DIXComLogger

但要注意,不能直接运行__main__.py脚本,必须回到MainProjectDIX目录下,用包的方式运行:

python -m Infra

这种方法更符合Python包的设计规范,但对运行方式有要求。

方法3:设置PYTHONPATH环境变量

在运行脚本前,把项目根目录添加到PYTHONPATH环境变量中,让Python全局能找到这个路径下的模块:

  • Linux/macOS终端:
export PYTHONPATH=/绝对路径/MainProjectDIX:$PYTHONPATH
python Infra/__main__.py
  • Windows命令提示符:
set PYTHONPATH=C:\绝对路径\MainProjectDIX;%PYTHONPATH%
python Infra/__main__.py

这种方法适合需要频繁运行项目的场景,一次性设置后后续运行都不需要再调整代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:32:28