仮想環境”venv”や”conda”と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スクリプトの位置と名前
| 環境の種類 | 見分け方(例) |
|---|---|
| venv | venv\Scripts\activate.bat(または bin/activate)がある |
| conda | anaconda3\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 | ノードベースの画像生成UI | ComfyUI_windows_portable のように一式構成 |
| InvokeAI | 画像生成UI(比較的軽量) | セットアップ時に自動でvenv + models構成を作る |
| KoboldAI / TavernAI | AIチャットツール(LLM系) | LLM + Web UI + venv が一体型 |
| Whisper Web UI(local版) | 音声認識(Whisper) | 一式まとめて配置・起動可能 |
| SadTalker / Wav2Lip | 音声 + 顔アニメーション合成 | 一式で動くスクリプト/Gradio構成が多い |
| Fooocus | SDベースのお手軽画像生成UI | Fooocus\ フォルダ内に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.batやpython.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に引っ越しをしましょう
あわせて読みたい

【Dockerコンテナ徹底解説】~インストールからDocker対応AIツールまで Dockerコンテナとは? 通常、あるツールやアプリを動かすには「OSの設定・依存ライブラリ・Python・CUDAのバージョン」などを細かく合わせる必要があります。そして、そ…
