??在 [SD] 本地搭建相對獨立的stable-diffusion運行環(huán)境 中我介紹了在移動硬盤里搭建stable-diffusion-webui的操作蝠筑。這個環(huán)境可以跟著我們移動,可以很方便的在不同電腦上啟動沿盅。唯一的不足是痊土,每次換了電腦肄扎,如果移動硬盤盤符發(fā)生改變,需要修改venv的配置文件赁酝,把Python的絕對路徑更新下犯祠。今天就把這個不足也滿足掉。
??為了提高SD的運行速度酌呆,我換了一個SSD的移動硬盤衡载。目錄結(jié)構(gòu)順帶做了個小調(diào)整,當(dāng)前的目錄結(jié)構(gòu)為:
SD
├── Python
├── webui
| └── venv
| └── pyvenv.template
├── 1run.bat
??1run.bat
就是啟動SD的腳本隙袁,在這里面加上設(shè)置Python路徑的功能痰娱。創(chuàng)建pyvenv.template模板配置文件弃榨,里面把Python路徑的部分,全部寫為[PATH]標(biāo)記猜揪。每次啟動時惭墓,把標(biāo)記替換為實際路徑,并寫入到實際的配置文件里而姐。
@echo off
:: 1run.bat所在的目錄
set CUR_DIR=%~dp0
:: 再向上找一級目錄腊凶,也就是SD目錄的完整路徑
set SD_DIR=%CUR_DIR:~0,-1%
for %%d in (%SD_DIR%) do set SD_DIR=%%~dpd
:: Python目錄
set PY_DIR=%SD_DIR%Python
:: 將pyvenv.template里的[PATH]標(biāo)記,全部替換為Python目錄拴念,并寫入到pyvenv.cfg文件
powershell -Command "(Get-Content '.\venv\pyvenv.template') | ForEach-Object { $_ -replace '\[PATH\]', '%PY_DIR%' } | Set-Content '.\venv\pyvenv.cfg'"
set PYTHON=..\Python\python.exe
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
call webui.bat
pyvenv.template的內(nèi)容:
home = [PATH]
implementation = CPython
version_info = 3.10.6.final.0
virtualenv = 20.23.0
include-system-site-packages = false
base-prefix = [PATH]
base-exec-prefix = [PATH]
base-executable = [PATH]\python.exe
小插曲:
新買的SSD移動硬盤钧萍,文件系統(tǒng)是exFAT,在啟動SD時遇到了報錯:
fatal: detected dubious ownership in repository
這是因為 exFAT 文件系統(tǒng)不支持 Linux 文件系統(tǒng)的文件所有者和權(quán)限政鼠,導(dǎo)致 git 不能正確地管理文件的權(quán)限风瘦。
解決:執(zhí)行命令 git config --global --add safe.directory "*"
忽略所有目錄的安全檢查。
參考:
[Bug]: stderr: fatal: detected dubious ownership in repository #9924
[2023-08-19]補(bǔ)充
??今天把硬盤連到公司電腦啟動公般,發(fā)現(xiàn)還會下載一些東西万搔。經(jīng)過調(diào)查,是adetailer官帘、transformer等會從huggingface下載一些模型文件瞬雹,緩存到本地電腦上。
默認(rèn)的緩存地址是:C:\Users\admin\.cache\huggingface\hub
可以通過設(shè)置環(huán)境變量刽虹,改變緩存地址:
:: 把huggingface的緩存地址酗捌,改為SD\webui\.cache\huggingface,這樣就能跟著移動硬盤走了
set HF_HOME=.cache\huggingface
set HUGGINGFACE_HUB_CACHE=.cache\huggingface\hub