【已解决】ModuleNotFoundError: No module named ‘ldm.util‘; ‘ldm‘ is not a package

该文章已生成可运行项目,

写在前面:SD代码中很常见的问题,耗时1h左右解决,搜索优快云相关博客均未得到有效解决,后续在git-issues Issue search results 找到相关问题,但是都没有很详细的描述,记录如下:

File "/scripts/txt2img.py", line 15, in <module>
    from ldm.util import instantiate_from_config

报错 ModuleNotFoundError: No module named 'ldm.util'; 'ldm' is not a package

问题分析:Python 未正确找到 ldm.util 模块,一般情况下系统都会默认到/data5/zhangjiening/anaconda3/lib/python3.10/site-packages/ldm.py 这个路径找ldm.py,但其实我们要的是当前执行目录下的ldm/util.py

 解决方案:把项目的根目录路径(包含子模块的目录)添加到路径中

import sys

sys.path.append("/data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main")

如果只是在txt2img.py的顶部加了这两行,大概率还是会报错,既然前面尝试的解决方法仍然无效,我们需要更深入地排查:

1. 确认路径是否正确

检查 ldm 文件夹是否真的存在,并包含 util.py 文件:

ls /data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main/ldm

如果 ldm 文件夹不存在,或者缺少 util.py 文件,说明代码或文件结构不完整,需要重新下载或检查仓库。


2. 确认加载的模块

txt2img.py 文件中添加以下调试代码,打印当前的 sys.path 和尝试导入的模块路径:

import sys print("sys.path:", sys.path) try: from ldm.util import instantiate_from_config print("ldm.util loaded successfully.") except Exception as e: print("Error loading ldm.util:", e)

运行后:

  • 检查输出的 sys.path,确认项目的父目录路径是否正确。
  • 如果仍然无法加载模块,记录错误信息。

好的,在第二步确认加载的模块时,我这里就报错Error loading ldm.util: No module named 'ldm.util'; 'ldm' is not a package,按照下面的步骤继续检查:

1. 路径设置问题

确认你在 sys.path 中添加的路径是 ldm 文件夹的 父目录,而不是 ldm 文件夹本身。

例如,如果项目结构如下:

/data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main ├── scripts ├── ldm │ ├── util.py │ ├── other_files.py ...

则你需要添加的路径是:

sys.path.append('/data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main')

解决步骤:txt2img.py 的顶部添加:

import sys sys.path.append('/data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main')


2. 模块文件结构问题

确认 ldm 是一个包含 __init__.py 的 Python 包目录。
ldm 文件夹内应至少包含以下文件:

  • __init__.py(可以是空文件)
  • util.py

检查 ldm 目录:

ls /data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main/ldm

如果缺少 __init__.py,手动创建一个:

touch /data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main/ldm/__init__.py


3. 系统加载冲突

如果系统中存在另一个名为 ldm 的模块,Python 可能加载了错误的模块。

确认 ldm 模块来源: 在 txt2img.py 中添加:

import ldm print(ldm.__file__)

如果输出路径不是你的项目路径(如 /data5/...),说明加载了系统的其他 ldm 模块。


解决方法:

  • 通过修改 sys.path 优先加载项目模块:
     

    import sys sys.path.insert(0, '/data5/zhangjiening/Stable-Diffusion-for-Remote-Sensing-Image-Generation-main') from ldm.util import instantiate_from_config

如果系统中存在另一个名为 ldm 的模块,Python 可能加载了错误的模块。

确认 ldm 模块来源: 在 txt2img.py 中添加:

import ldm print(ldm.__file__)

如果输出路径不是你的项目路径(如 /data5/...),说明加载了系统的其他 ldm 模块。


我这里的问题就是上述第三步,系统的其他 ldm 模块,因此需要在开头简单粗暴的直接修改路径即可解决。总结一下:

  • 确认路径是否正确,并添加父目录到 sys.path
  • 检查 ldm 目录中是否包含 __init__.py 文件。
  • 排查系统中是否存在其他 ldm 模块并解决加载冲突。
  • 清理缓存文件,避免加载错误。
  • 如果仍未解决,重新克隆仓库并重新配置环境。
本文章已经生成可运行项目
E:\work\Python3\Lib\site-packages\clip\clip.py:6: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. from pkg_resources import packaging Loading model from checkpoints/M3FD.ckpt Global Step: 2000 [2025-05-28 14:47:22] F:\AI\DiffV2IR\infer.py - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eprint(line:60) :: Error when calling Cognitive Face API: status_code: 401 code: 401 message: Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource. [2025-05-28 14:47:22] F:\AI\DiffV2IR\infer.py - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eprint(line:60) :: img_url:https://raw.githubusercontent.com/Microsoft/Cognitive-Face-Windows/master/Data/detection1.jpg [2025-05-28 14:47:23] F:\AI\DiffV2IR\infer.py - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eprint(line:60) :: Error when calling Cognitive Face API: status_code: 401 code: 401 message: Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource. [2025-05-28 14:47:23] F:\AI\DiffV2IR\infer.py - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eprint(line:60) :: img_url:/data1/mingmingzhao/label/data_sets_teacher_1w/47017613_1510574400_out-video-jzc70f41fa6f7145b4b66738f81f082b65_f_1510574403268_t_1510575931221.flv_0001.jpg [] Traceback (most recent call last): File "F:\AI\DiffV2IR\infer.py", line 267, in <module> main() File "F:\AI\DiffV2IR\infer.py", line 154, in main model = load_model_from_config(config, args.ckpt, args.vae_ckpt) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AI\DiffV2IR\infer.py", line 99, in load_model_from_config model = instantiate_from_config(config.model) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AI\DiffV2IR\stable_diffusion\ldm\util.py", line 85, in instantiate_from_config return get_obj_from_str(config["target"])(**config.get("params", dict())) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AI\DiffV2IR\stable_diffusion\ldm\util.py", line 93, in get_obj_from_str return getattr(importlib.import_module(module, package=None), cls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\work\Python3\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1319, in _find_and_load_unlocked ModuleNotFoundError: No module named 'ldm.models'; 'ldm' is not a package
05-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值