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

运行test.py报ModuleNotFoundError: No module named 'PyImgUtils'问题求解

问题根源
  • 导入路径的解析上下文差异:直接运行utils.py时,Python会自动将utils.py所在的Analyzer目录加入模块搜索路径sys.path,此时Analyzer目录下的ImgUtils包可以被直接识别。运行test.py时,Python自动加入sys.path的是test.py所在的myproject目录,utils.py中写的绝对导入会从myproject根目录下查找ImgUtils包,自然找不到对应模块。
  • 你提到的「已添加ImgUtils.pyd路径到sys.path」大概率存在生效范围问题:如果是运行utils.py时添加的路径,不会同步到运行test.py的进程中;如果是运行test.py时添加的,要确保添加的是Analyzer目录的绝对路径,且添加逻辑在导入utils之前执行。
解决方案

以下方案按推荐优先级排序:

方案1:使用相对导入(符合Python包开发规范)

修改utils.py的导入语句为包内相对导入:

# utils.py 修改后
from .ImgUtils.ImgUtils import PyImageUtils

def my_test_function():
    a = PyImageUtils.analyze()
    return a

注意:使用相对导入的模块不能直接作为顶层脚本运行,若需要单独测试utils.py,请在myproject根目录下执行命令python -m Analyzer.utils。

方案2:使用完整层级的绝对导入

从项目根目录层级写全导入路径:

# utils.py 修改后
from Analyzer.ImgUtils.ImgUtils import PyImageUtils

def my_test_function():
    a = PyImageUtils.analyze()
    return a

修改后运行test.py可直接正常执行,若需要单独运行utils.py,请提前将myproject目录的绝对路径加入sys.path。

方案3:运行test.py时主动添加搜索路径

如果不想修改utils.py的现有代码,可以在test.py最开头添加路径,注意要放在导入utils之前执行:

# test.py 修改后
import sys
from pathlib import Path
# 将Analyzer目录加入模块搜索路径
sys.path.append(str(Path(__file__).parent / "Analyzer"))

from Analyzer import utils
print(utils.my_test_function())

方案4:永久配置搜索路径

将Analyzer目录的绝对路径添加到系统环境变量PYTHONPATH中,配置完成后所有Python进程都可以直接识别对应路径下的模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:10