仮想環境”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スクリプトの位置と名前

環境の種類見分け方(例)
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 などの手動管理の仮想環境と考えられます。

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

整理で学んだこと

  • 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.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をコピーしました!
目次