第一次下载V1的stable diffusion (https://github.com/CompVis/stable-diffusion) 到本地调试,根据其要求创建了虚拟环境,自动运行了setup.py文件,长这样
from setuptools import setup, find_packagessetup(name='latent-diffusion',version='0.0.1',description='',packages=find_packages(),install_requires=['torch','numpy','tqdm',],
)
这个文件直接把stable-diffusion 安装到了我虚拟环境的python 包里,用pip list输出长这样
后来代码被我改了很多来调试学习,于是为了再一次看看原本的代码是什么样,我又重新git clone代码库下载,存放在temmmmmmp/stable-diffusion,虚拟环境没有变,还是用的第一次创建的那个
自此bug出现了,运行scripts/txt2img.py报了各种错,找不到各种东西,最后发现是如下的所有import,凡是从stable-diffusion里面import的module,都不是从temmmmmmp/stable-diffusion里import的,而是从原来的stable-diffusion文件夹下import进来的,原来的早就被我改得面目全非,当然找不到
import argparse, os, sys, glob
import cv2
import torch
import numpy as np
from omegaconf import OmegaConf
from PIL import Image
from tqdm import tqdm, trange
from imwatermark import WatermarkEncoder
from itertools import islice
from einops import rearrange
from torchvision.utils import make_grid
import time
from pytorch_lightning import seed_everything
from torch import autocast
from contextlib import contextmanager, nullcontextfrom ldm.util import instantiate_from_configfrom ldm.models.diffusion.ddim import DDIMSampler
from ldm.models.diffusion.plms import PLMSSampler
为什么我在temmmmmmp/stable-diffusion下执行txt2img,而包却从../stable-diffusion里import过来?
就是因为setup.py把第一次下载下来的stable-diffusion安装到了我的python包里,并且改动后是立即生效,不用reinstall,这就是为了方便大家在服务器上任何地方都能直接import stable-diffusion下的module,但这个功能我并不需要,而且把我坑傻了,浪费了两个多小时来debug