当前位置:AIGC资讯 > AIGC > 正文

conda环境下RuntimeError: Couldn‘t determine Stable Diffusion‘s hash问题解决

1 问题描述

在部署stable-diffusion-webui项目时,出现RuntimeError: Couldn't determine Stable Diffusion's hash错误,错误信息如下:

 [root@localhost stable-diffusion-webui]# sh webui.sh 
################################################################
Launching launch.py...
################################################################
Cannot locate TCMalloc (improves CPU memory usage)
Python 3.8.5 (default, Sep  4 2020, 07:30:14) 
[GCC 7.3.0]
Version: v1.4.0
Commit hash: 394ffa7b0a7fff3ec484bcd084e673a8b301ccc8
Traceback (most recent call last):
  File "launch.py", line 38, in <module>
    main()
  File "launch.py", line 29, in main
    prepare_environment()
  File "/opt/stable-diffusion-webui/modules/launch_utils.py", line 299, in prepare_environment
    git_clone(stable_diffusion_repo, repo_dir('stable-diffusion-stability-ai'), "Stable Diffusion", stable_diffusion_commit_hash)
  File "/opt/stable-diffusion-webui/modules/launch_utils.py", line 145, in git_clone
    current_hash = run(f'"{git}" -C "{dir}" rev-parse HEAD', None, f"Couldn't determine {name}'s hash: {commithash}").strip()
  File "/opt/stable-diffusion-webui/modules/launch_utils.py", line 107, in run
    raise RuntimeError("\n".join(error_bits))
RuntimeError: Couldn't determine Stable Diffusion's hash: cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf.
Command: "git" -C "/opt/stable-diffusion-webui/repositories/stable-diffusion-stability-ai" rev-parse HEAD
Error code: 129
stderr: Unknown option: -C
usage: git [--version] [--help] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

2 问题分析

经过查阅资料,是git安全机制导致读取不到对应的插件

3 解决方法

(1)查看git版本

[root@localhost stable-diffusion-webui]# git --version
git version 1.8.3.1

如果当前版本为1.8,先要将git升级到最新版本,升级命令如下:

把老版本的 Git 卸掉。
sudo yum -y remove git
sudo yum -y remove git-*


添加 End Point 到 CentOS 7 仓库
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm


安装 Git
sudo yum -y install git

 完成后查看git版本

[root@localhost ~]# git --version
git version 2.41.0

 (2)依次忽略相关文件夹

由于git安全机制问题,导致项目读取不到相应的stable-diffusion-stability-ai等插件。通过如下命令解决:

git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/stable-diffusion-stability-ai
 
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/CodeFormer
 
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/k-diffusion
 
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/BLIP
 
git config --global --add safe.directory /opt/stable-diffusion-webui/repositories/taming-transformers

至此,问题已经解决

 4 conda环境介绍

Conda是一个开源的包管理器和环境管理系统,用于安装、运行和更新包和其依赖项。它是由Anaconda, Inc.(以前称为Continuum Analytics)创建,用于支持Python程序开发,但它也可以用来管理来自其他语言的包。Conda使得包管理和环境隔离变得简单,对于处理多个项目中的依赖关系和版本控制尤其有用。

Conda是一个强大的工具,对于管理复杂的Python项目和环境至关重要。它简化了包管理和环境设置,使得Python开发更加容易和高效。通过使用Conda,开发者可以确保他们的项目在不同机器和操作系统上都能以相同的方式运行,大大提高了项目的可移植性和可复现性。

4.1 Conda的核心功能

包管理:Conda作为包管理器,可以安装、更新和移除Python包。它通过Conda仓库,如Anaconda Cloud或Conda Forge,来获取包。

环境管理:Conda允许用户创建隔离的环境,以便于不同项目可以拥有不同的库和/或Python版本。这在处理不兼容的依赖项或不同项目的需求时非常有用。

跨平台:Conda支持Linux、OS X和Windows,并允许创建跨平台的Python环境。

开源:Conda是开源的,允许用户查看源代码并对其进行改进。

4.2 使用Conda的优势

解决依赖性问题:Conda可以自动解决包之间的依赖关系,简化了安装过程。

环境隔离:创建独立的环境可以避免包之间的版本冲突,使得项目更稳定。

易于使用:Conda的命令行界面简单直观,易于学习和使用。

广泛的包支持:Conda支持Python的许多流行库和应用程序。

社区支持:作为一个流行的工具,Conda拥有一个活跃的社区,用户可以从中找到支持和资源。

4.3 Conda环境的创建和管理

创建新环境:使用conda create命令创建一个新环境,可以指定Python版本和所需的包。

激活环境:使用conda activate命令来激活环境。

安装包:在激活的环境中使用conda install命令来安装新的包。

环境列表:使用conda env list来查看所有可用的Conda环境。

移除环境:使用conda env remove命令来移除不再需要的环境。

4.4 应用场景

数据科学和机器学习:Conda非常适合于数据科学和机器学习项目,这些项目通常需要多个库和框架。 软件开发:软件开发者使用Conda来管理项目依赖,确保一致的开发环境。 教学和学术研究:教师和研究人员使用Conda来创建具有特定库和工具的环境,用于教学和研究。

4.5 常用命令

Conda 是一个开源的包管理器和环境管理器,广泛用于管理Python环境和包。以下是一些常用的 Conda 命令:

安装 Conda 包:

conda install [package-name]: 安装指定的包。

创建和管理环境:

conda create --name [env-name]: 创建一个新的环境。 conda activate [env-name]: 激活指定环境。 conda deactivate: 退出当前环境。 conda env list: 列出所有可用的环境。

管理包:

conda list: 在当前环境中列出所有已安装的包。 conda update [package-name]: 更新指定的包。 conda remove [package-name]: 移除指定的包。

搜索包:

conda search [package-name]: 搜索可用的包版本。

环境导出和导入:

conda env export > environment.yml: 导出当前环境的配置到一个YAML文件。 conda env create -f environment.yml: 使用YAML文件创建一个新环境。

更新 Conda:

conda update conda: 更新 Conda 到最新版本。

查看 Conda 信息:

conda info: 显示关于 Conda 的信息。

更新时间 2023-12-27