🙄

仮想環境のディレクトリを `.venv` にする場合のTips

2023/02/15に公開

Pythonのプロジェクトのディレクトリ内に仮想環境を作成する場合、慣習として .venvのような名前を使うことがあります。しかし、単に python3 -m venv .venv のようにして仮想環境を作成すると、プロンプトに表示される仮想環境名も (.venv) になってしまって残念な感じになってしまいます。

~/t $ python3 -m venv .venv
~/t $ source .venv/bin/activate
(.venv) ~/t $

この仮想環境名を変更するためには、 python -m venv コマンドの --prompt <name> を使います。

~/t $ python3 -m venv --prompt hoge .venv
~/t $ source .venv/bin/activate
(hoge) ~/t $

Python 3.9 からは、この --prompt オプションに '.' を指定できるようになりました。 --prompt . を使うと、現在のディレクトリ名をプロンプトに利用するようになります。

https://github.com/python/cpython/issues/83082

~/t $ python3 -m venv --prompt . .venv
~/t $ source .venv/bin/activate
(t) ~/t $

私は、このオプションに加えて pip を自動でアップデートする --upgrade-deps オプションも使って、次のようなエイリアスを設定しています。

.bashrc
alias mkvenv='python3 -m venv --upgrade-deps --prompt . .venv'
alias activate='source .venv/bin/activate'

このエイリアスを使うと、次のように手軽に仮想環境を扱えます。(実際にはさらに direnv も組み合わせて activate の自動化も行っています。)

~/t $ mkvenv
~/t $ activate
(t) ~/t $ deactivate
~/t $

(追記) virtualenv も v20.10.0 から --prompt . の挙動が venv と同じになっています。

GitHubで編集を提案

Discussion