stable diffusion webui 更改为python3.11版本运行Windows11

#工作记录

本次记录是用python3.11部署和运行stable diffusion webui后怎么消除python版本不匹配的输出的方法,理论上python3.11在一些包的兼容性和可用性会更好一些。

我使用的.venv虚拟环境,是通过预备的anaconda python3.11虚拟环境新建而来的,也就是用"D:\ProgramData\anaconda3\envs\python311\python.exe"作为PyCharm的基础python版本新建的本地项目virtualenv虚拟环境。

题外话:就我个人而言,我还是比较推荐这种环境管理方式,尽量把python.exe相关虚拟环境留在项目本地目录,而不是conda。因为anaconda时间久了比较容易出现问题,当你有数量级的conda虚拟环境之后anaconda,一旦出现软件级的错误,会导致所有conda虚拟环境无法被项目软件识别和使用,并且anaconda的修复和conda虚拟环境的恢复太麻烦了,修复也不一定能回到原先的状态。

当我们在虚拟环境中使用python3.11版本时,启动stable diffusion webui 的安装会报出以下提醒:

但不得不说,python3.11版本在windows11系统下安装stable diffusion webui 的各种依赖和扩展的依赖时都比python3.10更占优势,适应性也表现的更好(这种体验仅限windows11系统)。

如果我们想消除这个烦人的启动提示:

1、可以在启动参数中添加它给出的参数跳过python版本的检查"--skip-python-version-check"

复制代码
--skip-python-version-check

或者试试接下来要说的这个方法:

2、 修改modules/launch_utils.py 文件中,用于检查 Python 版本的代码段

在 modules/launch_utils.py 文件中,用于检查 Python 版本的代码段如下:

从modules/launch_utils.py 文件中的第34行开始是用于检查 Python 版本的代码段,但是,我们仅需要修改一处或几处就行了(修改1处就足够,其他修改只是文本性的逻辑性的修改)

复制代码
def check_python_version():
    is_windows = platform.system() == "Windows"
    major = sys.version_info.major
    minor = sys.version_info.minor
    micro = sys.version_info.micro

    if is_windows:
        supported_minors = [10]  # 修改这里以支持 Python 3.11
    else:
        supported_minors = [7, 8, 9, 10, 11]  # 修改这里以支持 Python 3.11

    if not (major == 3 and minor in supported_minors):
        import modules.errors

        modules.errors.print_error_explanation(f"""
INCOMPATIBLE PYTHON VERSION

This program is tested with 3.10.6 Python, but you have {major}.{minor}.{micro}.
If you encounter an error with "RuntimeError: Couldn't install torch." message,
or any other error regarding unsuccessful package (library) installation,
please downgrade (or upgrade) to the latest version of 3.10 Python
and delete current Python and "venv" folder in WebUI's directory.

You can download 3.10 Python from here: <url id="cvjbqgonnlrf6od5ec90" type="url" status="parsed" title="Python Release Python 3.10.6" wc="3729">https://www.python.org/downloads/release/python-3106/</url>

{"Alternatively, use a binary release of WebUI: <url id="cvjbqgonnlrf6od5ec9g" type="url" status="parsed" title="Release v1.0.0-pre · AUTOMATIC1111/stable-diffusion-webui" wc="614">https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre</url>" if is_windows else ""}

Use --skip-python-version-check to suppress this warning.
""")

代码解析

  1. sys.version_info :

• sys.version_info 是一个包含 Python 版本信息的元组,格式为 (major, minor, micro, releaselevel, serial) 。

• major 是主版本号(例如 3), minor 是次版本号(例如 10), micro 是修订号(例如 6)。

  1. supported_minors :

• 这是一个列表,定义了脚本支持的 Python 次版本号。

• 在 Windows 系统下, supported_minors 被设置为 [10] ,表示只支持 Python 3.10。

• 在非 Windows 系统下, supported_minors 被设置为 [7, 8, 9, 10, 11] ,表示支持 Python 3.7 到 3.11。

  1. 版本检查逻辑:

• if not (major == 3 and minor in supported_minors): 这行代码检查当前 Python 版本是否符合要求。

• 如果当前 Python 版本不符合要求,会调用 modules.errors.print_error_explanation 函数,打印一条错误信息,提示用户当前使用的 Python 版本不兼容,并建议用户切换到支持的版本。

修改为支持 Python 3.11如果你想让脚本支持 Python 3.11,可以将 supported_minors 列表中的值修改为包含 11

复制代码
    if is_windows:
        supported_minors = [11]  # 修改为支持 Python 3.11

代码的其他几处本来也应一起修改,不然从注释和标注的逻辑上看有些说不通,但本着最少修改的原则,仅修改这一处就可以了,其他文本性不影响代码运行的标注不改也是可以的, 而且不影响stable diffusion webui的正常运行。

如果要完整的修改,该代码段如下:

复制代码
# ...之前的代码...

def check_python_version():
    is_windows = platform.system() == "Windows"
    major = sys.version_info.major
    minor = sys.version_info.minor
    micro = sys.version_info.micro

    if is_windows:
        supported_minors = [11]  # 修改为 [11],第 41 行
    else:
        supported_minors = [7, 8, 9, 10, 11]  # 保持不变,第 43 行

    if not (major == 3 and minor in supported_minors):  # 第 45 行
        import modules.errors

        modules.errors.print_error_explanation(f"""
INCOMPATIBLE PYTHON VERSION

This program is tested with 3.11 Python, but you have {major}.{minor}.{micro}.  # 修改为 3.11,第 51 行
If you encounter an error with "RuntimeError: Couldn't install torch." message,
or any other error regarding unsuccessful package (library) installation,
please downgrade (or upgrade) to the latest version of 3.11 Python  # 修改为 3.11,第 54 行
and delete current Python and "venv" folder in WebUI's directory.

You can download 3.11 Python from here: https://www.python.org/downloads/  # 修改为 3.11 的下载链接,第 57 行

{"Alternatively, use a binary release of WebUI: <url id="cvjbqgonnlrf6od5ec9g" type="url" status="parsed" title="Release v1.0.0-pre · AUTOMATIC1111/stable-diffusion-webui" wc="614">https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre</url>" if is_windows else ""}

Use --skip-python-version-check to suppress this warning.
""")  # 第 61 行

修改的具体位置(完整代码中的行号)

  1. 第 41 行:

• 原始代码: supported_minors = [10]

• 修改为: supported_minors = [11]

• 说明:将 Windows 系统支持的 Python 次版本从 3.10 修改为 3.11。

  1. 第 51 行:

• 原始代码: This program is tested with 3.10.6 Python, but you have {major}.{minor}.{micro}.

• 修改为: This program is tested with 3.11 Python, but you have {major}.{minor}.{micro}.

• 说明:将提示信息中的 3.10.6 修改为 3.11 。

  1. 第 54 行:

• 原始代码: please downgrade (or upgrade) to the latest version of 3.10 Python

• 修改为: please downgrade (or upgrade) to the latest version of 3.11 Python

• 说明:将提示信息中的 3.10 修改为 3.11 。

  1. 第 57 行:

• 原始代码: You can download 3.10 Python from here: <url id="cvjbqgonnlrf6od5ec90" type="url" status="parsed" title="Python Release Python 3.10.6" wc="3729">https://www.python.org/downloads/release/python-3106/\</url>

• 修改为: You can download 3.11 Python from here: https://www.python.org/downloads/

• 说明:将 Python 3.10 的下载链接修改为 Python 3.11 的通用下载链接。

最后还要提醒请注意,某些依赖包可能不兼容当前的 Python 版本,可能会导致运行时错误。即使目前还没发现问题,但即使发现了也不一定完全是python版本的问题。

运行后如下:

可以看到python版本不匹配的大段提醒已经没有了。

相关推荐
语戚1 天前
深度解析:Stable Diffusion 底层原理 + U-Net Denoise 去噪机制全拆解
人工智能·ai·stable diffusion·aigc·模型
平安的平安3 天前
用 Python 玩转 AI 绘图:Stable Diffusion 本地部署指南
人工智能·python·stable diffusion
语戚3 天前
Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
人工智能·ai·stable diffusion·aigc·模型
Chockmans3 天前
2026年3月青少年软件编程(Python)等级考试试卷(六级)
开发语言·python·青少年编程·蓝桥杯·pycharm·python3.11·python六级
yumgpkpm4 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM和用Docker部署LLM的区别
docker·chatgpt·容器·stable diffusion·kubernetes·llama·gpu算力
语戚4 天前
Stable Diffusion 入门:架构、空间与生成流程概览
人工智能·ai·stable diffusion·aigc·模型
yumgpkpm4 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM(Qwen3-32B)的详细步骤,保姆级命令及方法、下载链接等
运维·服务器·华为·stable diffusion·aigc·copilot·llama
平安的平安5 天前
Python 实现 AI 图像生成:调用 Stable Diffusion API 完整教程
人工智能·python·stable diffusion
孤岛站岗10 天前
【AI大模型入门】B02:Stable Diffusion——开源绘图,让AI绘画飞入寻常百姓家
人工智能·stable diffusion·开源
智星云算力10 天前
从创作到训练:Stable Diffusion WebUI全链路实战
人工智能·深度学习·stable diffusion·智星云·gpu算力租用