てくなべ (tekunabe)

ansible / network / automation / StackStorm

[Python] venv で作成した仮想環境を --clear オプションで初期状態にクリアする

--clear オプションでクリア

venv には、作成した仮想環境を初期状態にクリアする--clearオプションがあります。

  • python -m venv --help によるヘルプ表示抜粋
  --clear               Delete the contents of the environment directory if it
                        already exists, before environment creation.

activate している状態であれば、いったん deactivate したうえで、以下のように実行します。

python -m venv --clear 対象の仮想環境ディレクトリ

pythonpython3 など、各環境に読み替えてください。


お試し

新しく仮想環境を作成し、パッケージをインストールし、クリアしたらそのパッケージがないことを確認します。 Python 3.7.1 で試しています。

$ python3 -m venv testenv             # 仮想環境 testenv の作成
$ source testenv/bin/activate         # 仮想環境 testenv の有効化
(testenv) $ pip install netmiko       # パッケージ(ここでは netmiko)のインストール
Collecting netmiko
  Using cached https://files.pythonhosted.org/packages/83/a7/2d77f332ecf44909e70002cb20dbabfe8bd7bb1c552b67a2a75349fe1598/netmiko-2.3.0.tar.gz
(...略...)
(testenv) $ pip list | grep netmiko   # あることを確認
netmiko      2.3.0                    # ある
(...略...)
(testenv) $ deactivate                # いったん仮想環境を抜ける
$ python3 -m venv --clear testenv     # --clear で初期状態にクリア
$ source testenv/bin/activate         # 再度、仮想環境 testenv の有効化
(testenv) $ pip list | grep netmiko   # ないことを確認
(testenv) $                           # ない


参考

venv --- 仮想環境の作成

いままで、初期状態にクリアするときはディレクトリを一旦削除して同じ名前の仮想環境を作り直していたのですが、以下の本の「Chapter 03 Python プロジェクトの構成とパッケージ作成」で、venv の --clear オプションで一発で初期化できることを知りました。

Pythonプロフェッショナルプログラミング 第3版

Pythonプロフェッショナルプログラミング 第3版