仮想環境”venv”や”conda”とPC整理

仮想環境とPC整理

Stable Diffusion や Kohya_ss、AUTOMATIC1111 のようなツールをいくつも導入していくと、仮想環境(venvやconda)がどんどん増えて混乱しやすくなりますよね

今回は、どんどん追加してしまった仮想環境が随分と散らかってきてしまった時の、整理についてのメモをしておくことにしました。
特に、今回の記事では、仮想環境について、前から気になっていた事の原因(理由)が解明されてスッキリしましたので共有したいと思います。

目次

venvやconda環境の乱立

venvはフォルダ単位の「独立環境」

  • venv は、ツールごとに「そのツール専用のPython・ライブラリ空間」を用意する仕組みです。
  • それぞれ完全に独立していて、他に干渉しません。
  • 1つの環境が壊れても、他には影響なし。

例:

/projects
  ├── automatic1111_env/
  ├── kohya_env/
  └── whisper_env/

このように分けておけば、全く問題ない。

「問題ないけど注意すべきこと」

⚠ 1. ディスク容量

  • venv を1つ作ると、Python本体 + ライブラリで数百MB~1GB前後になることもあります。
  • 10個も作ると数GB以上になるので、使い終わった環境は削除すると安心です。

その為には…

⚠ 2. 管理しやすいフォルダ構成を保つ

  • 仮想環境ごとに「目的名のフォルダ+README.txtなどをつけておくと、後から見返しやすい。

例:

/venvs
  ├── kohya_env/  ← kohya_ss用
  ├── sd_webui_env/ ← AUTOMATIC1111用
  └── whisper_env/ ← Whisper用
SAKASA

本来は、初めからこうするべきでしたが、現実はぐちゃぐちゃ・・・になっていました。(…何故なら、こんなに増えると思っていなかったし、知らなかったからです。)

venvを整理したい時

操作コマンド or 方法
仮想環境を作成python -m venv 環境名
仮想環境の削除仮想環境のフォルダごと削除(例:rm -rf whisper_env
どこにあるかわからなくなったファイル検索で「activate.bat」「pyvenv.cfg」を探すと発見できる
まとめて管理したい/venvs//envs/ フォルダに集約しておくと便利

それまで謎だったこと

以下の様な、手順で作業したあと、(例:この場合はKohya_ss)

conda create -n Kohya python=3.10
conda activate Kohya
cd C:\Users\Owner\Kohya_ss
pip install -r requirements.txt

フォルダを見てみるとこの様になっていました。

C:\AI\Stable Diffusio\
    └── venv\
        └── (仮想環境:Pythonのvenv)

C:\Users\Owner\
    ├── anaconda\
    │     └── (Anaconda本体+仮想環境群)
    └── Kohya_ss\
          └── (ツール本体 or Anaconda仮想環境あり?)

もしかしたら、同じモヤモヤを抱えている方がいるかも知れません。
私は、このフォルダ配置が、すごく気になっていました。何が気になっていたかというと、
├── anacondaが、└── Kohya_ssフォルダの中に入っていないという点です。大丈夫かな?なんかこの配置気持ちが悪いな…と、見て見ぬふりをしていました。
何故なら、何か不具合があるという事は全く無かったからです。・・・それもそのはず・・・

これは 「仮想環境」と「アプリ本体」は必ずしも同じ場所に存在する必要がない」 という設計によるものらしい・・・です。
そうだったんだ…!

というわけで、今までなんだかインストールの失敗なんじゃないか?とか、いつか動かなくなったり、おかしな挙動を見せたりするんじゃないかと、疑っていましたが、スッキリしました。この場合、

\anaconda3\envs\Kohya\

というパスが存在していれば、きちんと、Anacondaで作成された仮想環境「Kohya」です。

名前役割保存場所
Kohya仮想環境(Python・ライブラリ)C:\Users\Owner\anaconda3\envs\Kohya
Kohya_ss実行コード・スクリプト群C:\Users\Owner\Kohya_ss\
  • Kohya 仮想環境には、Python本体やPyTorchなどの依存ライブラリが入っている。
  • Kohya_ss フォルダには、実際のツールのコード(train_network.py など)がある。
  • そして、Kohya仮想環境を有効化した状態でKohya_ssのスクリプトを実行することで、ツールが動作する。

仮想環境 ≠ プロジェクトフォルダ(場所は別)

Pythonでは、アクティブな仮想環境(この場合は Kohya)に依存関係がインストールされていれば、どこにあるコードでも実行可能。だから、

  • 仮想環境が anaconda3/envs/Kohya
  • プロジェクトが C:\Users\Owner\Kohya_ss

でも全然問題なく動作する!というしくみ。
そして、このような「仮想環境とツールを分離する構成」のほうが汎用性が高いです。

汎用構成が向いているツール

ツール向いている構成
Kohya_ss 分離型(学習向け、パス管理が重要)
ComfyUI (開発版) 分離型(nodeやcustom extensionを扱う場合)
Diffusersベースのスクリプト 分離型(スクリプト実行ごとに環境を切り替える)
研究・実験系コード 分離型(再現性やチーム開発重視)

venvかAnacondaかを見分ける方法

で、結局どっちを使っていたんだろう?というか、実際アナコンダプロンプトを使用していたので、Anacondaを使っていたのは分かってだけど、どっちも使える環境になってるんじゃないの?と内心思っていたんですよ。

方法1:activateスクリプトの位置と名前

環境の種類見分け方(例)
venvvenv\Scripts\activate.bat(または bin/activate)がある
condaanaconda3\envs\環境名\Scripts\activate.bat などがある。conda info --envs で一覧表示可

方法2:pyvenv.cfgファイルの有無(venv特有)

  • venvで作成された仮想環境には、必ず pyvenv.cfg ファイルが含まれています。
  • 例:C:\AI\Stable Diffusio\venv\pyvenv.cfg

方法3:Anaconda Promptで確認

Anaconda Promptを開いて、次のコマンドを実行

conda info --envs

→ ここに表示されるものは conda環境(Anaconda)。
表示されないものは venv などの手動管理の仮想環境と考えられます。

うーんスッキリスッキリ。

スタンドアロン型フォルダ

多くの生成AI・AIツールは「スタンドアロン構成」が主流ですが、「本番環境」や「複数プロジェクトを統一管理」したい場合には、venv・データ・ソースコードを分ける構成が有利になります。
この構成の特徴: アプリケーション一式が1フォルダにまとまっている

C:\AI\stable-diffusion-webui\
├── venv\                         ← 仮想環境(このプロジェクト専用)
├── models\
│   └── Stable-diffusion\
│       └── v1-5-pruned-emaonly.safetensors  ← モデルファイル
├── extensions\
├── scripts\
├── webui-user.bat
├── launch.py
└── ...

特徴:

  • スタンドアロン型:このフォルダだけで起動・管理が完結する。
  • venv もモデルも設定も全部この中に入っていて、他と干渉しにくい。
  • 複製・バックアップもフォルダごと取れる。
  • Git管理下には一部しか入れない(.gitignoreでvenvやmodelsを除外するなど)。

スタンドアロン構成のAIツール(例)

ツール名内容備考
ComfyUIノードベースの画像生成UIComfyUI_windows_portable のように一式構成
InvokeAI画像生成UI(比較的軽量)セットアップ時に自動でvenv + models構成を作る
KoboldAI / TavernAIAIチャットツール(LLM系)LLM + Web UI + venv が一体型
Whisper Web UI(local版)音声認識(Whisper)一式まとめて配置・起動可能
SadTalker / Wav2Lip音声 + 顔アニメーション合成一式で動くスクリプト/Gradio構成が多い
FooocusSDベースのお手軽画像生成UIFooocus\ フォルダ内にvenvやモデル含む構成

例外的にvenvを分けたいとき(上級者向け)

  • 同じ仮想環境を複数のツールで使いたい
  • 複数のWebUIを同時に管理したい
  • 仮想環境を一括管理したい(例:Anaconda)

というケースが出てきたら、venv を外に出す選択肢もあります。

でも、Stable Diffusion Web UI のような「完成アプリ系」は、基本フォルダ内完結でOKです。

整理で学んだこと

  • Anacondaベースかvenvベースかを一度把握して、メモしておくと混乱が減る。
  • 使い終わった仮想環境やプロジェクトは、専用の「AI_projects」フォルダなどに移動・整理すると管理しやすくなります。

整理しておくと便利なラベルづけ

今後混乱しないために、仮想環境名にツール名を入れておくと便利ですね

conda create -n kohya_conda python=3.10
python -m venv whisper_env

こうすると、

  • kohya_conda → Anaconda環境
  • whisper_env → venv環境

とひと目で分かるようになります。

1. 「/envs/」や「/venvs/」に集約する=あらかじめ決めた場所に作る

そりゃそうだ。初めからこうするべきでした。

  • 先に /envs//venvs/ というディレクトリを自分で用意しておき、
  • 仮想環境作成時に「ここに作ってね」と明示的に指定する方法。

2. 後からフォルダ移動するのは基本NG(涙)

そして、⚠ 2. 管理しやすいフォルダ構成を保つの項で書いた、
一旦作られたフォルダ構成についてですが、残念ながら後から移動するのは基本NGなのです。

  • 仮想環境内のパスは「絶対パス」で設定されており、
  • Scripts/activate.batpython.exe などが「元の場所前提」で動作。
  • 移動してしまうと、動かなくなる/壊れる可能性が高い。

おさらい:理想的な環境構築

python -m venv の場合

たとえば、以下のように明示的にパスを指定

mkdir D:\AI\venvs
python -m venv D:\AI\venvs\whisper_env

これで、D:\AI\venvs\whisper_env\ に仮想環境が作られます。

conda の場合(Anaconda)

conda create--prefix を使うと任意の場所に作れます

conda create --prefix D:\AI\envs\kohya_conda python=3.10

これで D:\AI\envs\kohya_conda\ に仮想環境が作成されます。

--name kohya だと通常は anaconda3/envs/kohya/ に作られます。(冒頭の構成です。)


おすすめ構成

方法説明
D:\AI\envs\conda環境用の集約場所
D:\AI\venvs\venv用の集約場所(python -m venv
プロジェクトは D:\AI\projects\プロジェクト名\ などに分離仮想環境とは分けて保存
ヤドカリのお引っ越し
タイトル:ヤドカリのお引っ越し

そして、それさえも煩わしくなったら、Dockerに引っ越しをしましょう

  • URLをコピーしました!
目次