Pythonの仮想環境管理はvenvで

最近Pythonに触り始めたクチなのですが、Pythonは外部ライブラリが充実していて使ってみたいと思うモジュールが豊富にあります。
が、使いたいものを手当たり次第に本体システム環境に追加していくとカオスなことになるのは明白なので、プロジェクトごとに仮想環境を用意して使用するモジュールを環境ごとに切り替えられるように管理することが一般的です。
そこで使われるのがvenv
という機能です。
今回は、このvenv
の基本的な使い方を転ばぬ先の杖として(Python初心者の僕が)ちゃんと学んでおこうという内容です。
環境
- OS: macOS High Sierra 10.13.6
- Python: 3.7.1
venv概要
古くからあるパッケージ環境管理ツールであるvirtualenv
というのがあるのですが、これの機能がPython 3.3で標準ライブラリに取り込まれたものがvenv
です。なのでPython3の環境であるなら仮想環境管理は基本的にvenv
が使われます。
元々はpyvenvというツールが推奨されていたそうなのですが、Python 3.6以上で非推奨となったため注意です。
使い方
使用に当たってソフトなどを別途インストールする必要はありません。
一応、本体システムのpip
でのパッケージインストール状況を確認しておきます。(pip
はPython2系・3系に標準で付いているパッケージ管理ツールです。)
$ pip list
Package Version
---------- -------
pip 18.1
setuptools 39.0.1
仮想環境を作成
対象プロジェクトのディレクトリに移動し、コマンドでpython3 -m venv [環境名]
とやると、指定した名前で仮想環境が作成されます。
python_testプロジェクトにtest_venvという名前の仮想環境を作成
$ cd ~/workspace/python_test
$ python3 -m venv test_venv
対象フォルダ内にcfgファイルなどが置かれた環境名のフォルダが作成されます。
$ ls
test_venv
仮想環境の起動
$ . test_venv/bin/activate
Windowsの場合は
$ .\test_venv\bin\activate
起動中はコマンドを実行するごとに結果の最後に([環境名])
が表示されるようになります。
仮想環境の終了
$ deactivate
以上が基本的なコマンドとなります。
確認
仮想環境が起動済であることを確認して、試しにライブラリをインストールしてみます。
$ pip install tqdm
Collecting tqdm
Downloading https://files.pythonhosted.org/packages/ed/d6/3458d39cf4978f4ece846295e83daf5ece710ab0a4106774f7f7b3a68697/tqdm-4.29.1-py2.py3-none-any.whl (46kB)
100% |████████████████████████████████| 51kB 1.4MB/s
Installing collected packages: tqdm
Successfully installed tqdm-4.29.1
(test_venv)
tqdm
はコマンドラインにプログレスバーを表示させることができるモジュールです。
パッケージインストール状況はこんな具合になりました。
$ pip list
Package Version
---------- -------
pip 18.1
setuptools 39.0.1
tqdm 4.29.1
(test_venv)
早速モジュールを使用するファイルtest.py
を作り、
from tqdm import *
for i in trange(100):
pass
実行してちゃんとモジュールがインポートできていることを確認。
$ python test.py
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:00<00:00, 348364.12it/s]
(test_venv)
一旦、仮想環境を終了して再度実行してみます。
$ deactivate
$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from tqdm import *
ModuleNotFoundError: No module named 'tqdm'
ModuleNotFoundError
が出ました。
パッケージリストを見ると本システムの方にはtqdm
がインストールされていないことが確認できました。
$ pip list
Package Version
---------- -------
pip 18.1
setuptools 39.0.1
このようにプロジェクトごとに仮想環境を作成しておけば、起動コマンドを打つだけで必要分だけのモジュールをインストールした環境に瞬時に切り替えられるようになります。
最後に
Python開発環境においてモジュールの構築やバージョンの兼ね合いなどがおかしくなって収拾がつかなくなってしまっても、最悪環境ごと削除して初めから構築し直せるというのは、精神衛生的にもかなり好作用だと思います。
今回はvenv
+ pip
の紹介でしたが、他に公式からの推薦がある環境管理ツールでpipenvというものもあります。興味のある方、もっと本格的にPythonの環境管理をしたいという方がいればこちらも試してみてはいかがでしょうか。