常磐 BATCH「お前たちの“.\venv\Scripts\activate”って、醜くないか?」


チラ裏ではありますが。

こういうバッチファイルを作って PATH を通しておくと venv をより直感的に扱えるようになるんじゃないかなあという提案です。

venv.bat
@echo off

IF "%~1" == "" (
    set env_name=venv
) ELSE (
    set env_name=%~1
)

IF NOT EXIST "./%env_name%/Scripts/activate" (
    python -m venv %env_name%
    call ./%env_name%/Scripts/activate
    python -m pip install pip --upgrade
    pip install setuptools --upgrade
) ELSE (
    call ./%env_name%/Scripts/activate
)

使い方

説明するまでもないですが。

作業するディレクトリでvenvと実行すると、バッチファイルが venv を呼び出して仮想環境を作成します。 一緒に pip と setuptools の更新も行ってくれます。

すでに仮想環境が存在する場合単にそれに入ります。

venv envnameのように引数を与えるとその名前で仮想環境を作成します。

余談

見ての通り、Python のバージョンの指定などはできないので、それを指定する必要がある場合は作成までは手作業で行う必要があるかな、と。 本体バージョンの管理は環境を分けたい理由のひとつなのにそれでいいのか?

ふつうバッチファイルではsetlocalしてpushd "%~dp0"して呼び出し元を汚染しないようにしますが、それを逆手に取ってこれらを記述しないことで呼び出し元に対する処理を記述できるってことなんでしょうかね。(バッチわからないマン)

我が魔王のお言葉

「みんな瞬間瞬間を必死にコーディングしてるんだ! デコボコなのは当然だろ! それを醜いなんて言うな!」

リファクタリングしろ