@Ki-git43340

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Stable Diffusion web uiのインストールがうまくいきません。

はじめて質問させていただきます。
よろしくお願いいたします。

解決したいこと

ステイブルディフュージョンのインストール時にエラーが発生。
cmdが一瞬開いて閉じるので管理者として実行して下記のエラーコードを確認しました。

発生している問題・エラー

C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe: can't open file 'C:\\c': [Errno 2] No such file or directory
Creating venv in directory C:\SD\stable-diffusion-webui\venv using python
Unable to create venv in directory "C:\SD\stable-diffusion-webui\venv"

exit code: 9009

stderr:
'-m' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Launch unsuccessful. Exiting.
続行するには何かキーを押してください . . .

原因

最初のインストールや稼働はうまくいっていたのですが、私がウィンドウズの環境変数にあるPath内のPythonのパスを削除してしまいました。
そのタイミングでStable Diffusionの起動ができなくなったため、Pythonのアンインストール・Stable Diffusionフォルダの削除を行い、再インストールをしたところ下記のような状態となっております。

環境

Windows 11 Pro
64 ビット オペレーティング システム

自分で試したこと

1.webui-user.batをメモ帳で開き、Pythonのフルパスを記載して実行
「set PYTHON=C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe」

2.python(3.10.6)・git・ステイブルディフュージョンの再インストール
※1.pythonインストール時の「□パスを作成する」はチェックを入れて、推奨設定にてインストール
※2.ステイブルディフュージョンは最新のものと、バージョン1.5で交互に確認

どうぞよろしくお願いいたします。

1 likes

2Answer

状況を試せないので予想となることをご承知おきください

①単純にvenv自体が動いていない可能性
任意のフォルダでpython -m venv venvと実行して動作はしますでしょうか?
⇒動作しない場合はpython -m pip install --user virtualenvでvenvをインストールしてみてください
⇒うまくいった場合はstablediffusionのフォルダをそのフォルダに移動してから試してみてください。(権限などの可能性)

②pythonのパス設定時に余計な文字が入っている可能性
「'-m' は、内部コマンドまたは外部コマンド、」
というエラー内容を見るに、python -mではなく-m単体で実行されているように見受けられます。
例えば
c:\(省略)\python(改行文字) -m xxxx
のようにpythonのパスとその後ろに区切り文字等が入っていてコマンドが分離されている可能性です。
webui-user.batの改行コードは\nのようですので、
メモ帳などで編集した場合に改行コードが\r\nとなり余計な文字が入っているのかもしれません。
改行コードの設定が可能なエディタで改行コードが\nとなるように修正してみてください。

1Like

Comments

  1. @Ki-git43340

    Questioner

    ご返信ありがとうございます。
    内容のほう拝見しました。

    まず②を検証しました。
    VSコードで開いたところ、たしかに“CRLF”となっていたためLFに変更。パスを改めてコピペし直し保存しましたが変化なしでした。
    ※パス内に空白、改行等は見られませんでした。

    ①について
    python -m venv venv は動作しました。
    できたvenvファイルをステイブルディフュージョンにコピーして、再度実行したところ下記のエラー1が出ました。

    エラー1

    venv "C:\SD\stable-diffusion-webui\venv\Scripts\Python.exe"
    C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe: can't open file 'C:\\Windows\\System32\\launch.py': [Errno 2] No such file or directory
    

    試しに、ステイブルディフュージョンフォルダ内のlaunch.pyを“C:\Windows\System32”にコピペしたところ下記のエラー2が出ました。

    エラー2

    venv "C:\SD\stable-diffusion-webui\venv\Scripts\Python.exe"
    Traceback (most recent call last):
      File "C:\Windows\System32\launch.py", line 1, in <module>
        from modules import launch_utils
    ModuleNotFoundError: No module named 'modules'
    

    あわせて下記の方法も試してみましたが変化ありませんでした。
    ・pythonをインストールする場所が違うのかと思い、一度アンインストール
    ・手動で作ったvenvとステイブルディフュージョンも一緒に削除
    ・「カスタマイズインストール」にて“Program Files”内にpythonをインストール
    ・改めてステイブルディフュージョンをインストール
    実行しましたが同じ現象でした。

    pythonのインストール場所に問題があるようにも見受けられますが、やはりウィンドウズOS自体をインストールしなおしたほうがいいのでしょうか。。。

  2. すいません、python -m venv venvを試すといったのは現象切り分けの為となり、修正するための施策ではありませんでした。
    Stable Diffsion内のbatにてvenvは作成されるので、自分で作成したものを使う必要はありません。
    しかしながら「PATH内にpythonは含まれていそう」「venvは入っていそう」は確認出来ました。

    Stable Diffsion内のbatを確認したところ、以下の行で現象が発生しているものと思われますが、

    for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%%i"
    echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME%
    %PYTHON_FULLNAME% -m venv "%VENV_DIR%" >tmp/stdout.txt 2>tmp/stderr.txt
    

    しかしながらご提示いただいたエラーメッセージは以下となっております。
    Creating venv in directory C:\SD\stable-diffusion-webui\venv using python
    本来"using python"の後ろにPythonの実行パスが出力されるはずなのですが、空なので"%PYTHON_FULLNAME%が空になっていそうなのが問題でありそうです。

    %PYTHON_FULLNAME%は%PYTHON%から生成されていますので
    やはり%PYTHON%の環境変数設定がうまくいっていないようです。
    %PYTHON%は省略された場合"python"という文字がデフォルトで入るようになっています。検証では"python"のみで動作が出来ているようですので一度以下の施策をロールバックしてみてください。

    1.webui-user.batをメモ帳で開き、Pythonのフルパスを記載して実行
    「set PYTHON=C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe」

    それでもうまくいかない場合は以下を手動で実行してみてください。
    echo %PYTHON%
    %PYTHON% -c "import sys; print(sys.executable)
    python -c "import sys; print(sys.executable)
    この時、意図しているのPythonインストール箇所と異なるようであれば%PYTHON%の環境変数が誤ったものになっている可能性がありますのでWindowsの環境変数を正しいものに設定してください。
    %PYTHON%という環境変数が設定されていないというエラーは問題ありません(私の環境でも上記3コマンド中、上二つのコマンドは%PYTHON%が設定されていないため動作しませんがStable Diffusionは動作しています。)
    あくまで意図しないパスになっていないかを確認するためとなります。

  3. @Ki-git43340

    Questioner

    ご返信ありがとうございます!
    なにぶん素人なもので何もわからない状況のため、こうしてご返信いただけるだけでも大変心強いです。

    再度、Pythonのフルパスを記載して実行しましたが、現状変わりませんでした。
    Pathについて確認したところ、

    echo %PYTHON%
    →%PYTHON%

    %PYTHON% -c "import sys; print(sys.executable)
    →C:\Users\(ユーザー名)>%PYTHON% -c "import sys; print(sys.executable)
    '%PYTHON%' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    python -c "import sys; print(sys.executable)
    →C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe

    となり、3番目でパスの場所を確認できました。

    パスの内容は問題ないように見受けられます。

    参考になるかわかりませんが、
    現状の“ユーザー環境変数”のPathの状況は下記のとおりです。

    C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\Scripts
    C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310
    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps
    C:\SD\stable-diffusion-webui
    C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310
    C:\Users\(ユーザー名)\AppData\Local\Programs\Microsoft VS Code\bin

    “システム環境変数”のPathは下記のとおりです。

    %SystemRoot%\system32
    %SystemRoot%
    %SystemRoot%\System32\Wbem
    %SYSTEMROOT%\System32\WindowsPowerShell\v1.0
    %SYSTEMROOT%\System32\OpenSSH
    C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
    C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR
    C:\SD\stable-diffusion-webui
    C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310
    C:\Program Files\Git\cmd

    これは順番なども関係ありますでしょうか。

説明が分かりづらく申し訳ありません
下記の施策をロールバックというのは下記の施策を削除してみてくださいという意味でした。

1.webui-user.batをメモ帳で開き、Pythonのフルパスを記載して実行
「set PYTHON=C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe」

それによって以下のエラー内容が変わってきたりするはずです。

C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe: can't open file 'C:\\c': [Errno 2] No such file or directory
Creating venv in directory C:\SD\stable-diffusion-webui\venv using python

理由としては
echo %PYTHON%で検証していただいた通り、現状Windows側には%PYTHON%という環境変数が設定されていない認識です。

その場合
webui.bat中の7行目
if not defined PYTHON (set PYTHON=python)
この処理により%PYTHON%には"python"という文字列が設定されるはずです。
それにより現在エラーが直接発生している下記の箇所

for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%%i"
echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME%

%PYTHON% -c "import sys; print(sys.executable)"の部分が試していただいたpython -c "import sys; print(sys.executable)"として動作するはずなので、うまくいくのではないかということになります。

もしかしたら、他の箇所で%PYTHON%が設定されてしまっている可能性もあるので
winui.batの上記処理の直前(37行目)でecho %PYTHON%を入れてみてください。


ロールバックするので関係なくなるのですが、ふと思った点として
(ユーザー名)の部分に日本語は入っていますでしょうか?その場合webui-user.batを保存した時の文字コードによってはおかしくなりそうです。

1Like

Comments

  1. @Ki-git43340

    Questioner

    ご返信ありがとうございます!

    ロールバックの件確認しました。

    set PYTHON=C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe
    の=以後を削除し保存しましたがエラー内容に変化はありませんでした。

    「set PYTHON=」のまま echo %PYTHON% を37行目の直前に入れましたところ下記のエラーに変化しました。

    python for /f "delims=" %i in ('CALL python -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%i"
    Creating venv in directory C:\SD\stable-diffusion-webui\venv using python
    Unable to create venv in directory "C:\SD\stable-diffusion-webui\venv"
    

    venvファイルを作成できないといった内容でしょうか??

    ユーザー名の箇所でございますが日本語・記号・空白・大文字・数字は含まれていません。

    C:\Users\satoshi\AppData~~
    みたいな感じです。

  2. すいません。入れていただいた"echo %PYTHON%"が次の行にも作用し、for~の部分が無効化されてしまっているようです。
    一旦そちらは削除ください。
    しかしながら%PYTHON%の中に"python"がはいっていることは確認できましたので、
    上記追加したechoを消すだけで動くようになりませんでしょうか?

    venvファイルを作成できないのは副次的な問題で
    やはり下記の部分がポイント化と思います。

    Creating venv in directory C:\SD\stable-diffusion-webui\venv using python
    

    上記のメッセージを表示しているのは下記なので

    echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME%
    

    メッセージ内の"using python"の後ろに%PYTHON_FULLNAME%(私の場合Pythonへのフルパスが入っていました)が出力されなければおかしいのです。

    ここで
    for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%%i"
    の%PYTHON%にきちんと"python"が入っているようならばおそらく作用すると思うのですが。。。

    すいませんエラーがこちらで再現できないので直接的な回答をご提示できず。。。

  3. @Ki-git43340

    Questioner

    ご返信ありがとうございます!

    丁寧に相談にのっていただき本当にありがとうございました。
    今週、もう一回さわってみてダメならwindowsを再インストールしてみようと思います。

  4. @Ki-git43340

    Questioner

    @hokutoh

    先日は、ご相談に乗っていただきありがとうございました。
    クリーンインストールしたところ、新たなエラーが出つつも無事、インストールが完了し動くようになりました。

    このたびは、お付き合いいただきありがとうございました。

Your answer might help someone💌