仮想環境”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用
本当は、こうするべきでしたが、現実はぐちゃぐちゃ・・・になっていたのです。
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
のフォルダの中に入っていないという点です。大丈夫かな?なんかこの配置気持ちが悪いな…と、長らく見て見ぬふりをしていたのですが、先日この謎がやっと解けました。
そうだったんだ…!
というわけで、今までなんだかインストールの失敗なんじゃないか?とか、いつか動かなくなったり、おかしな挙動を見せたりするんじゃないかと、疑っていたのがスッキリしました。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
でも全然問題なく動作する!というしくみ。らしいです。
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
などの手動管理の仮想環境と考えられます。
うーんスッキリスッキリ。
整理で学んだこと
- 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(涙)
- 仮想環境内のパスは「絶対パス」で設定されており、
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に引っ越しをしましょう

