コンテンツにスキップ

uv venvしすぎたのでクリーナーを作ってみた

2025/10/31
(2026/02/05 更新)

Venv Cleaner

Astralのuvに慣れてくるとsource .venv/bin/activateとタイプするのが面倒になってきて、uv run スクリプトとタイプするのが習慣になってきました。uvというコマンド名はタイプしやすくて良いですね。

Pythonは仮想環境(.venvディレクトリなど)を作って使うことが当たり前になりました。Pythonのバージョンを変えたいときはuv python pin バージョンで即反映できるのも便利です。(uv venvした後にpinし直してもバージョンが変えられるんですね。今気付きました😅)

あまりにもuvが便利なので、最近はちょっとしたバッチ処理やノートブック(Jupyter Lab)を動かすだけでも作業用ディレクトリ(フォルダー)を作ってuv venvuv pip installするようになってしまったのですが、その結果、.venvディレクトリをいろんな場所で大量に作りすぎてしまいました😅。MacやLinuxでは.venvは隠しディレクトリになってしまうため、lsコマンドやFinderなどのファイル管理ソフトで探すのが面倒です。

そこで、.venvディレクトリを検索して、古くなったり使わなくなったりしたものを掃除できるツールがあると便利だろうと思い、Venv Cleaner (GitHubはこちら)というツールを作りました。

作りすぎた.venvディレクトリを探してクリーンアップするツールです

Section titled “作りすぎた.venvディレクトリを探してクリーンアップするツールです”

Venv Cleanerは対象とするディレクトリ内にあるPythonの仮想環境ディレクトリを検索・一覧表示して、削除したりパス名をコピーしたりできるGUIツールです。

検索条件はpyvenv.cfgというファイルを直下に格納しているディレクトリです。この部分は今後見直していくかもしれませんが、今のところ.venvなどの仮想環境ディレクトリはうまく見つけられていると思います。

  • 検索対象のディレクトリの中をスキャンして、.venvなどの仮想環境ディレクトリを探します。
  • Selectボタンで検索対象のディレクトリを変更できます。Refreshボタンでスキャンを再実行します。
  • Select Allボタンで一覧表示されているディレクトリを全て選択します。Select Noneで選択を解除します。
  • 一覧から仮想環境ディレクトリを1つ以上選択してCopy Pathsボタンを押すと、選択中の仮想環境ディレクトリのフルパス名をクリップボードにコピーします。コピーしたパス名をターミナルに貼り付けて、lsrm -rなどのコマンドのパラメータに渡すことができます。
  • 一覧から仮想環境ディレクトリを1つ以上選択してCleanup Venvsボタンを押すと、選択中の仮想環境ディレクトリを削除します。rm -rと同じ動作です。ゴミ箱に入れないのでご注意ください。Cleanup Venvsボタンは自己責任に同意する(I agree to take responsibility… チェックボックスをオンにする)と使うことができます。

Cleanup Venvsボタンを押したときに削除前の確認メッセージを表示していますが、あらかじめディレクトリの中身を確認したりするのであれば、Copy Pathsボタンを使ってディレクトリのフルパス名を取得し、ターミナルでコマンド操作することをおすすめします。

Terminal window
ls /path/to/project-1/.venv "/path/to/project 2/.venv"
rm -r /path/to/project-1/.venv "/path/to/project 2/.venv"

Venv Cleanerはuvxですぐに動かせます(Mac・Win)

Section titled “Venv Cleanerはuvxですぐに動かせます(Mac・Win)”

MacやWindowsの場合は、uvさえインストールされていれば、uvxコマンドをターミナルに1行入力するだけでVenv Cleanerをすぐに動かすことができます(Linuxは後述)。PyPIからダウンロードするときにネット環境が必要になります。

Terminal window
uvx venvcleaner
# 明示的に最新版を動かすときは`@latest`を付ける
uvx venvcleaner@latest

Venv Cleanerをパラメータなしで起動すると、現在の作業ディレクトリ(カレントディレクトリ)配下の.venvディレクトリを検索します。サブディレクトリも検索します。

カレントディレクトリ以外のディレクトリを検索する場合は、パラメータで指定します。

Terminal window
uvx venvcleaner /path/to/target-directory

なお、頻繁に使うのであれば、永続的な環境にツールをインストールすることもできます。

Terminal window
# Venv Cleanerを永続環境にインストール
uv tool install venvcleaner@latest
# 永続環境にインストールしたVenv Cleanerを起動
venvcleaner

Venv CleanerはLinuxでもuvxで動かせました(まあ一応)

Section titled “Venv CleanerはLinuxでもuvxで動かせました(まあ一応)”

Linuxについては、残念ながらuvx venvcleanerだけでは動きませんでした(Ubuntu 24.04とXubuntu 24.04で確認)。Linux用wxPythonのパッケージが動作環境に合わせて個別にリリースされており、wxPythonのダウンロードURLを指定する必要がありました。詳細はwxPython Downloadsという記事をご覧ください。

以下のように-f (--find-links)オプションでダウンロードURLを指定してuvxを実行すると、適切なwxPythonのLinuxパッケージをダウンロードしてVenv Cleanerを実行します。

Terminal window
# Ubuntu 24.04の場合
uvx -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 venvcleaner

残念なことに、一度適切なwxPythonパッケージをダウンロードしたにも関わらず、次回以降も-fオプションを指定する必要があります(uv v0.9.7で確認)。毎回-fオプションでダウンロードURLを指定するのは大変なので、永続環境にインストールしてお使いください。

Terminal window
# Venv Cleanerを永続環境にインストール
# Ubuntu 24.04の場合
uv tool install -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 venvcleaner@latest
# 永続環境にインストールしたVenv Cleanerを起動
venvcleaner

uvxで動かないときはpipでインストールします

Section titled “uvxで動かないときはpipでインストールします”

もし何らかの理由によりuvxで動かないようでしたら、インストール用ディレクトリを作ってpipでインストールします。

Terminal window
mkdir -p /path/to/installation-directory
cd /path/to/installation-directory
python3 -m venv venv
source venv/bin/activate
# Linuxの場合、wxPythonのダウンロードURLを指定してインストールします (以下はUbuntu 24.04の場合)
python3 -m pip install -v -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 wxPython
python3 -m pip install venvcleaner
# venvにインストールしたVenv Cleanerを起動
venvcleaner

気兼ねなくuvを使った後のお掃除が簡単になりました

Section titled “気兼ねなくuvを使った後のお掃除が簡単になりました”

そもそもPythonの仮想環境をホームディレクトリ配下のそこら中に作りまくっていた自分の使い方がおかしいのかもしれませんが😅、例えば、撮影した写真を加工したり動画から静止画を切り出したりするときにJupyter Labでノートブックを作り画像をプレビューしながら画像処理や動画処理を行うので、Picturesフォルダー(ディレクトリ)内の撮影データフォルダーごとに.venvを作っていました。

Terminal window
# 撮影データごとにJupyter Labと作業に必要なPythonパッケージをインストール
cd ~/Pictures/撮影日フォルダー
uv venv
uv pip install jupyterlab pillow opencv-python-headless # その他、必要に応じて追加
uv run juputer lab

Venv Cleanerを作ったことで、Pythonと関係が無さそうなフォルダーの中に作ってしまった.venvも見つけ出してクリーンアップすることが簡単になりました。これで気兼ねなくuv venvコマンドを使うことができます✨

なお、.venvを消してしまうとノートブックで使っていたPythonパッケージが分からなくなってしまうので、以下のようにrequirements.txtを作って残しておきます。(自分への備忘録)

Terminal window
uv pip freeze > requirements.txt
# venvを復元(あるいは別マシンで再現)するときは以下のコマンドを実行
uv venv
uv pip install -r requirements.txt