开发自定义脚本
扩展只是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.py
是launch.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
许可
如果您想在与该项目使用的不同开源许可证下进行扩展和共享,我并不反对。