
Astralのuvに慣れてくるとsource .venv/bin/activateとタイプするのが面倒になってきて、uv run スクリプトとタイプするのが習慣になってきました。uvというコマンド名はタイプしやすくて良いですね。
Pythonは仮想環境(.venvディレクトリなど)を作って使うことが当たり前になりました。Pythonのバージョンを変えたいときはuv python pin バージョンで即反映できるのも便利です。(uv venvした後にpinし直してもバージョンが変えられるんですね。今気付きました😅)
あまりにもuvが便利なので、最近はちょっとしたバッチ処理やノートブック(Jupyter Lab)を動かすだけでも作業用ディレクトリ(フォルダー)を作ってuv venvやuv pip installするようになってしまったのですが、その結果、.venvディレクトリをいろんな場所で大量に作りすぎてしまいました😅。MacやLinuxでは.venvは隠しディレクトリになってしまうため、lsコマンドやFinderなどのファイル管理ソフトで探すのが面倒です。
そこで、.venvディレクトリを検索して、古くなったり使わなくなったりしたものを掃除できるツールがあると便利だろうと思い、Venv Cleaner (GitHub)というツールを作りました。
作りすぎた.venvディレクトリを探してクリーンアップするツールです
Venv Cleanerは対象とするディレクトリ内にあるPythonの仮想環境ディレクトリを検索・一覧表示して、削除したりパス名をコピーしたりできるGUIツールです。
検索条件はpyvenv.cfgというファイルを直下に格納しているディレクトリです。この部分は今後見直していくかもしれませんが、今のところ.venvなどの仮想環境ディレクトリはうまく見つけられていると思います。

- 検索対象のディレクトリの中をスキャンして
.venvなどの仮想環境ディレクトリを探します。 - Selectボタンで検索対象のディレクトリを変更できます。Refreshボタンでスキャンを再実行します。
- Select Allボタンで一覧表示されているディレクトリを全て選択します。Select Noneで選択を解除します。
- 一覧から仮想環境ディレクトリを1つ以上選択してCopy Pathsボタンを押すと、選択中の仮想環境ディレクトリのフルパス名をクリップボードにコピーします。コピーしたパス名をターミナルに貼り付けて、
lsやrm -rなどのコマンドのパラメータに渡すことができます。 - 一覧から仮想環境ディレクトリを1つ以上選択してCleanup Venvsボタンを押すと、選択中の仮想環境ディレクトリを削除します。
rm -rと同じ動作です。ゴミ箱に入れないのでご注意ください。Cleanup Venvsボタンは自己責任に同意する(I agree to take responsibility...チェックボックスをオンにする)と使うことができます。
Cleanup Venvsボタンを押したときに削除前の確認メッセージを表示していますが、あらかじめディレクトリの中身を確認したりするのであれば、Copy Pathsボタンを使ってディレクトリのフルパス名を取得し、ターミナルでコマンド操作することをおすすめします。
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)
MacやWindowsの場合は、uvさえインストールされていれば、uvxコマンドをターミナルに1行入力するだけでVenv Cleanerをすぐに動かすことができます(Linuxは後述)。PyPIからダウンロードするときにネット環境が必要になります。
uvx venvcleaner
# 明示的に最新版を動かすときは`@latest`を付ける
uvx venvcleaner@latestVenv Cleanerをパラメータなしで起動すると、現在の作業ディレクトリ(カレントディレクトリ)配下の.venvディレクトリを検索します。サブディレクトリも検索します。
カレントディレクトリ以外のディレクトリを検索する場合は、パラメータで指定します。
uvx venvcleaner /path/to/target-directoryなお、頻繁に使うのであれば、永続的な環境にツールをインストールすることもできます。
# Venv Cleanerを永続環境にインストール
uv tool install venvcleaner@latest
# 永続環境にインストールしたVenv Cleanerを起動
venvcleanerVenv 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を実行します。
# 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を指定するのは大変なので、永続環境にインストールしてお使いください。
# 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なお、当初の記事では--indexでダウンロードURLを指定していましたが、これは誤りでした。もし本記事を既に読んでいましたら、誤った情報を流してしまったことを謹んでお詫び申し上げます。
uvxで動かないときはpipでインストールします
もし何らかの理由によりuvxで動かないようでしたら、インストール用ディレクトリを作ってpipでインストールします。
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を使った後のお掃除が簡単になりました
そもそもPythonの仮想環境をホームディレクトリ配下のそこら中に作りまくっていた自分の使い方がおかしいのかもしれませんが😅、例えば、撮影した写真を加工したり動画から静止画を切り出したりするときにJupyter Labでノートブックを作り画像をプレビューしながら画像処理や動画処理を行うので、Picturesフォルダー(ディレクトリ)内の撮影データフォルダーごとに.venvを作っていました。
# 撮影データごとにJupyter Labと作業に必要なPythonパッケージをインストール
cd ~/Pictures/撮影日フォルダー
uv venv
uv pip install jupyterlab pillow opencv-python-headless # その他、必要に応じて追加
uv run juputer labVenv Cleanerを作ったことで、Pythonと関係が無さそうなフォルダーの中に作ってしまった.venvも見つけ出してクリーンアップすることが簡単になりました。これで気兼ねなくuv venvコマンドを使うことができますね✨
なお、.venvを消してしまうとノートブックで使っていたPythonパッケージが分からなくなってしまうので、以下のようにrequirements.txtを作って残しておきます。(自分への備忘録)
uv pip freeze > requirements.txt
# venvを復元(あるいは別マシンで再現)するときは以下のコマンドを実行
uv venv
uv pip install -r requirements.txt

