Skip to content

开发自定义脚本

添加到索引

扩展只是extensions目录中的一个子目录。

Web ui通过以下方式与已安装的扩展进行交互:

  • 扩展的install.py脚本(如果存在)将被执行。
  • scripts目录中的扩展脚本执行时就像普通用户脚本一样,除了:
    • sys.path扩展到包括扩展目录,因此您可以毫无顾虑地导入其中的任何内容
    • 您可以使用scripts.basedir()来获取当前扩展的目录(因为用户可以为它命名任何他想要的东西)
  • javascript目录中的扩展的javascript文件被添加到页面中
  • localizations目录中的扩展本地化文件被添加到设置中;如果有两个具有相同名称的本地化,它们不会合并,一个将替换另一个。
  • 扩展名的style.css文件被添加到页面中
  • 如果扩展在其根目录中有preload.py文件,则在解析命令行args之前加载它
  • 如果扩展的preload.py具有preload函数,则调用它,并将命令行args解析器作为参数传递给它。以下是如何使用它来添加命令行参数的示例:
def preload(parser):
    parser.add_argument("--wildcards-dir", type=str, help="directory with wildcards", default=None)

有关如何开发自定义脚本,这通常会完成扩展的大部分工作,请参阅开发自定义脚本

本地化扩展

为项目进行本地化的首选方式是通过进行扩展。扩展名的基本文件结构应该是:


 📁 webui root directory
 ┗━━ 📁 extensions
     ┗━━ 📁 webui-localization-la_LA        <----- name of extension
         ┗━━ 📁 localizations                <----- the single directory inside the extension
             ┗━━ 📄 la_LA.json              <----- actual file with translations

使用此文件结构创建一个github存储库,并要求合作者部分中列出的任何人将您的扩展添加到wiki中。

如果您的语言需要javascript/css甚至python支持,您也可以将其添加到扩展中。

安装.py

install.pylaunch.py(启动程序)在webui启动之前在一个单独的进程中启动的脚本,它旨在安装扩展的依赖项。它必须位于扩展的根目录中,而不是脚本目录中。该脚本启动时,PYTHONPATH环境变量设置为webui的路径,因此您可以justimportimport launch并使用其功能:

import launch

if not launch.is_installed("aitextgen"):
    launch.run_pip("install aitextgen==0.6.0", "requirements for MagicPrompt")

小提示

添加额外的文本反转器

此代码进入扩展的脚本:

path = os.path.join(modules.scripts.basedir(), "embeddings")
modules.sd_hijack.model_hijack.embedding_db.add_embedding_dir(path)

用户示例

https://github.com/udon-universe/stable-diffusion-webui-extension-templates
https://github.com/AliceQAQ/sd-webui-gradio-demo
https://github.com/wcdnail/sd-web-ui-wexperimental
https://github.com/EnsignMK/ExampleSendText

官方扩展指数

(此外,您可以在此处添加扩展名+webui的工作提交版本:)

的内部图

https://miro.com/app/board/uXjVMdgY-TY=/?share_link_id=547908852229

图像

许可

如果您想在与该项目使用的不同开源许可证下进行扩展和共享,我并不反对。



回到顶部