【文生图系列】Stable Diffusion Webui安装部署过程中bug汇总(Linux系统)

2023-07-17 16:26:00

bugs

看网上部署stable diffusion webui的教程,很简单。而且我也有部署stable diffusion v1/v2的经验,想着应该会很快部署完stable diffusion webui,但是没想到在部署过程中,遇到各种各样的奇葩问题,特此在此记录一下。

虚拟环境python

stable diffusion webui支持的python版本需大于等于3.10.6,首先conda search python查看conda支持的python版本,我的conda支持到3.11,所以能够创建python=3.10.6的虚拟环境,然而却出现了如下错误。libgcc-ng等的版本不满足要求。
创建环境
我使用的是清华源,解决方案就是添加conda-forge通道conda config --append channels conda-forge,能够访问https://anaconda.org下载清华源中不存在的包。

Preparing metadata (setup.py)

在pip install -r requirement_version.txt时,在下载安装basicsr库preparing metadata (setup.py)中卡住一直不动。

解决方案:首先添加–verbose参数查看卡住的原因。pip install --verbose basicsr,输出如下所示:
在这里插入图片描述
安装需满足PEP 517,首先输入如下命令pip install --upgrade pip setuptools wheel 升级setuptools的版本。然后再使用命令pip install --verbose basicsr --use-pep517 进行安装。

gfpgan和cython

首先pip install -r requirement_version.txt安装所需要的包,没出问题。检查gfpgan也已经安装成功。
在这里插入图片描述
如上图所示,gfpgan和Cython都已经安装好的情况下,运行./webui.sh,出现
Couldn't install gfpgan. Error Could not find a version that satisfies the requirement cython。这个问题试了很多方法,总会出现各种各样的bug,最后终于解决。
在这里插入图片描述

  1. 出现一个很奇怪的事情,我的python版本是3.10.6,但是运行./webui.sh时,出现的Python版本是3.8,而且venv/lib下的python也是3.8。至今也没想出来,怎么冒出来一个python3.8。解决方案就是:对比github上的stable diffusion webui项目,多了venv文件夹,那说明venv文件夹是后生成的。删除整个venv整个文件夹,重新运行./webui.sh,python版本变成3.10.6,但是上述问题gfpgan和Cython的问题仍然存在。
  2. 解决python版本的问题之后,确认python为3.10.6,注释掉modules/launch_utils.py文件中关于gfpgan安装的代码之后,运行./webui.sh,部署成功。需全部注释掉之后才可以。
    在这里插入图片描述在这里插入图片描述
    曾试过手动安装gfpgan、上述不运行run_pip函数,直接下载gfpgan,都会存在上述问题。后来一想,既然gfpgan和Cython已经安装,那么就不需要再安装gfpgan吧,既然安装过程还需要二次安装,那么注释掉吧。这样,阴差阳错就把问题解决了。

重新运行./webui.sh,等待一段时间,依序安装所需软件,部署成功。
在这里插入图片描述

clip和open_clip的安装问题,在modules/launch_utils.py中将"https://github.com/“更改为"https://kgithub.com/”。

使用xformers,在webui-user.sh中添加export COMMANDLINE_ARGS="--autolaunch --xformers"命令行。

部署环境看着简单,有时候全凭运气。

更多推荐

PY32F003F18之通用定时器MspInit函数

PY32F003F18高级定时器有TIM1,通用定时器有TIM3,TIM14,TIM16和TIM17。在初始化定时器前,要先写好MspInit函数,才可以调用与之对应的初始化函数。1、TIM1更新事件的MspInit函数//函数功能:在初始化定时器时,HAL库使用该函数//使能TIMx时钟,设置中断优先级,使能TIMx

Spring MVC里的DispatchServlet(结合Spring官网翻译)

SpringMVC里的DispatchServlet前言1.SpringWebMVC1.1DispatcherServlet(中央调度器)1.1.1ContextHierarchy(上下文层次结构)1.1.2SpecialBeanTypes(特定的bean类型)1.1.3WebMVCConfig1.1.4Servlet

MyBatis特殊SQL的执行(模糊查询、批量删除、动态设置表名、添加功能获取自增的主键)

一、模糊查询1.1like'%${xxx}%'的方式模糊查询/***根据用户名进行模糊查询*@paramusername*@returnjava.util.List<com.atguigu.mybatis.pojo.User>*/List<User>getUserByLike(@Param("username")Str

竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录0前言1课题描述2实现效果3算法实现原理3.1数据集3.2深度学习识别算法3.3特征提取主干网络3.4总体实现流程4具体实现4.1预训练数据格式4.2部分实现代码5最后0前言🔥优质竞赛项目系列,今天要分享的是🚩毕业设计人脸性别年龄识别系统-图像识别opencv该项目较为新颖,适合作为竞赛课题方向,学长非常推

FPGA-结合协议时序实现UART收发器(三):串口接收模块uart_rx

FPGA-结合协议时序实现UART收发器(三):串口接收模块uart_rx串口接收模块uart_rx的功能实现文章目录FPGA-结合协议时序实现UART收发器(三):串口接收模块uart_rx一、功能实现二、uart_rx代码总结一、功能实现对照代码,串口接收模块uart_rx实现功能包括:r_cnt计数信号,计数数据

DMNet复现(一)之数据准备篇:Density map guided object detection in aerial image

一、生成密度图密度图标签生成采用以下代码,生成训练集密度图gt:importcv2importglobimporth5pyimportscipyimportpickleimportnumpyasnpfromPILimportImagefromitertoolsimportislicefromtqdmimporttqdm

Git常见的面试题

在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它。因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一。以下是一些常见的Git面试题,希望它们能帮助你在面试中脱颖而出。什么是Git?Git是一个分布式版本控制系统,用于跟踪和管理软件项目的变化。它允许多人协作开

Kafka 源码分析——Producer

文章目录前言Producer整体流程Producer初始化Producer发送流程执行拦截器逻辑获取集群元数据序列化选择分区消息累加进缓存消息发送Producer缓冲区Producer参数调优前言在Kafka中,把产生消息的一方称为Producer即生产者,它是Kafka的核心组件之一,也是消息的来源所在。它的主要功能

千兆以太网网络层 ARP 协议的原理与 FPGA 实现

文章目录前言一、ARP帧的应用场景和存在目的二、ARP帧工作原理三、以太网ARP帧发包实例设计四、以太网CRC校验代码五、以太网ARP帧发包测试---GMII1.模拟数据发送2.仿真模块3.仿真波形六、以太网ARP帧发包测试---RGMII1.顶层文件2.仿真代码七、上板测试(RGMII)前言本节对以太网电路接口和以太

中级职称评审论文重要吗?是不是必须要论文呢?

现在评中级职称职称对论文有什么要求?没有论文可以参与职称评审吗?建筑中级职称怎么评?那自然是从多方面来考核人才是否具备了评中级工程师的能力,职称论文就是考核的标准之一。甘建二告诉你,现在评职称论文是很重要的,没有论文职称是通过不了的,所以评职称的小伙伴,首先建议您这边先考虑发表论文,湖北这边职称评审对于论文的一个要求是

多语言多平台给线程增加命名

在许多编程语言和多线程库中,可以为线程分配一个名称以便更好地识别和调试线程。以下是在一些常见编程语言中如何为线程增加命名的示例:1.Python(使用threading模块):在Python中,你可以使用threading模块来创建和管理线程。要为线程增加名称,可以在创建线程对象时指定name参数:importthre

热文推荐