Pythonの仮想環境管理はvenvで

Blog Single

最近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の環境管理をしたいという方がいればこちらも試してみてはいかがでしょうか。

参考

Posted by ChienKenichi
趣味はゲーム、映画、休日にたまにひっそりとバイオリン、、、 自己紹介で名前を聞き返される事に定評がある(本人談)

Other Posts: