【已解决】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 模块并解决加载冲突。
  • 清理缓存文件,避免加载错误。
  • 如果仍未解决,重新克隆仓库并重新配置环境。
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值