克隆GitHub自有仓库子目录至Google Colab遇ModuleNotFoundError
问题分析与解决
错误原因
你遇到的ModuleNotFoundError: No module named 'CLIP',根源在于两个操作失误:
- 错误的Git克隆目标:你使用的是GitHub子目录的网页展示链接(如
.../tree/main/CLIP),这类链接仅用于网页浏览,无法被Git直接克隆。因此你的克隆操作并没有获取到CLIP的完整代码文件,导致Python找不到对应模块。 - 模块搜索路径未配置:即便CLIP代码被正确拉取到子目录中,Python默认不会自动搜索嵌套子目录里的模块,需要手动将目标目录添加到Python的搜索路径中。
解决方法
方法1:克隆整个自有仓库(最简单)
既然CLIP和guided-diffusion都已整合到你的自有仓库中,直接克隆整个仓库即可:
!git clone https://github.com/lyricstopaintings/lyricstopaintings.git
克隆完成后,将仓库目录添加到Python的模块搜索路径:
import sys sys.path.append('/content/lyricstopaintings')
之后再执行导入语句就能正常找到模块:
from CLIP import clip from guided_diffusion.script_util import create_model_and_diffusion, model_and_diffusion_defaults
方法2:使用Git子模块(规范方案)
如果你的自有仓库是通过Git子模块关联CLIP和guided-diffusion的,克隆时需要加上--recurse-submodules参数,确保子模块代码被同步拉取:
!git clone --recurse-submodules https://github.com/lyricstopaintings/lyricstopaintings.git
同样需要将仓库目录添加到Python搜索路径后再导入模块。
方法3:手动添加子目录到搜索路径(临时修复)
如果已经克隆了仓库但路径不对,可直接将CLIP和guided-diffusion的具体目录添加到Python路径:
import sys sys.path.append('/content/lyricstopaintings/CLIP') sys.path.append('/content/lyricstopaintings/guided-diffusion')
这种方式能快速解决导入问题,但长期维护推荐用前两种方法。
内容的提问来源于stack exchange,提问作者Botond Benedek
相关产品推荐
相关产品推荐

