友人から、「PC買い換えてStable Diffusion web UIを移動したら起動できなくなった」という話を聞いた。
状況聞いて解決できたが、エンジニアじゃない人にはちょっと面倒かなあと思いメモ。
問題
Stable Diffusion web UIをフォルダごと、古いPC(Windows 10)から新しいPC(Windows 11)にコピー。この時、保存先は同じパスにした模様。
新しいPCでGit for WindowsおよびPython3.10をインストールし、Stable Diffusion web UIの webui-user.bat
を実行すると、 No Python at 'C:\Python310\python.exe'
で起動に失敗するとのこと。
Pythonは、古いPCでは C:\Python310
にインストールした模様。新しいPCではMicrosoft Storeからインストールしたため、 どこにインストールされたかはわかっていなかった。
調査
webui-user.bat
の内容を教えてもらうと、 set PYTHON=
があったので、そこに where python
した結果( C:\Users\<ユーザー名>\AppData\Local\Microsoft\WindowsApps\python.exe
)を設定してもらったが変わらず。
上記のパスの python.exe
は0KBのため、シンボリックリンクっぽい。実ファイルパスを入れてみるかとも思ったが、それよりも set VENV_DIR=
が webui-user.bat
にあるのが気になる。
エラーメッセージと venv
でGitHubを検索すると、以下のissueが見つかった。
こちらのコメントにあるように、 venv
フォルダを削除すればよい。
対応
webui-user.bat
の VENV_DIR
を設定していればそのディレクトリ、未設定であれば webui-user.bat
と同じフォルダ内の venv
フォルダを削除(Windowsのゴミ箱に入れればいい)し、 webui-user.bat
を実行することで解消した。
このフォルダには、PythonがStable Diffusion web UIを実行するために必要なモジュール等の保存をしているが、そこに webui-user.bat
を最初に実行したときのPythonのパスも保存されており、それが原因で動かなくなっていた模様。
削除後の実行では、モジュールのダウンロード等が再度実行されるため多少時間はかかるが、 venv
フォルダが一番手っ取り早い。
同じPC上でも、Pythonを更新してパスが変わった場合には、同様の問題が発生しそう。また、フォルダを移動したら動かなくなった、という話もちらほら見かけたが、それも同様の原因だと思う。
なお、設定ファイルなどは venv
に保存されていないため、安心して削除していい。
ユーザー設定は、Settingsタブでの設定が config.json
、txt2imgやimg2imgタブの設定が ui-config.json
、保存したStyleは styles.csv
に保存されている模様。
git pull
で更新できない問題
ついでに、「git pull
で更新しようとしたらできない」ということで相談を受けた。
git status
してもらうと、一部の py
ファイル等に変更があるが、心当たりはないとのこと。
適当なファイルをメモ帳で開いてもらうと、改行コードがCRLFになっていた。Git Bashで git config --get core.autocrlf
を実行してもらうと true
となっていたため、それが原因でpullした際に改行コードが変換され、それが変更差分として扱われたものと思われる。
git config --global core.autocrlf false
を実行してもらい、リポジトリの変更は git reset --hard
で切り戻した。
config.json
など、ユーザー設定ファイルや、 models
, outputs
といったフォルダ配下の変更は差し戻されないか聞かれたが、いずれも .gitignore
に記載されているため、対象外となっている。
注意点として、 webui-user.bat
および webui-user.sh
も .gitignore
に記載されているが、すでにGit管理下に含まれているため、おそらくユーザーが変更する可能性のあるファイルのうち、これらのファイルに加えた変更のみ git reset
で差し戻される可能性がある。
友人は COMMANDLINE_ARGS
を変更していたため、そこだけバックアップしてもらい、 git reset --hard
および git pull
を実行してもらうと、最新の状態に更新できた。
振り返り
インストールにGitを使ってPythonで動かすとか、なかなか非エンジニアにはインストールが面倒そうだなぁと思った。
最近はDockerでも動かせるようだが、Docker使うよりはGit+Pythonのほうが楽か。
しかし、ChatGPTといいStable Diffusionといい、すごい時代になったなぁ。
ところで、Stable Diffusion web UIのメインのブランチ名、 master
なのね。すっかり main
に慣れたので、逆に珍しいと感じた。