2017/11/27更新

[Python] venvを用いてプロジェクトごとに独立した環境を構築する

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日は、Python標準のvenvという仮想環境ツールを用いて、プロジェクトごとに独立した環境を作る方法をブログに書きたいと思います。



目次




venvとは

venvは、プロジェクトごとにsite-pakcagesを独立して管理できる仮想環境ツールで、Python3.3から公式に組み込まれています。このブログで以前には「pyenvの使い方」や「pyenv-virtualenvの使い方」を紹介しましたが、今回はそれとは別の仮想環境の作り方となります。

僕は、Pythonに幾つかある仮想環境ツールを以下の基準で使い分けています。
  • pyenv
    • ローカル開発で利用。頻繁にPythonのバージョンとsite-packageを同時に切り替えたいので使ってます。これでanacondaも利用。
  • venv
    • Python3系の本番での環境構築に利用。
  • virtualenv
    • Python2系の本番での環境構築に利用。
venvは基本的にはvirtualenvと同じような機能なので、Python3.3以降ではvenvを使えば事足りるようです。



venvを使う

それではvenvを使って仮想環境を構築してみたいと思います。


仮想環境を新規作成する

新規に作成する場合には、以下のコマンドを実行します。
# python3 -m venv <環境を作るディレクトリ>
$ python3 -m venv env1

# Windowsの場合
c:\>c:\Python35\python -m venv env1
実行すると、env1というディレクトリが作成され、その中にいくつかのファイルが配置されます。
$ ls -la env1
total 8
drwxr-xr-x   6 munesadayohei  staff  192 11 16 09:23 .
drwxr-xr-x   4 munesadayohei  staff  128 11 16 09:23 ..
drwxr-xr-x  12 munesadayohei  staff  384 11 16 09:23 bin
drwxr-xr-x   2 munesadayohei  staff   64 11 16 09:23 include
drwxr-xr-x   3 munesadayohei  staff   96 11 16 09:23 lib
-rw-r--r--   1 munesadayohei  staff  114 11 16 09:23 pyvenv.cfg
このenv1というフォルダ内が仮想環境となります。


仮想環境を有効化する

まずは作成したディレクトリに入ります。
$ cd env1
そして、仮想環境を有効化するために、以下のコマンドを実行します。
# for bash (like MacOSX).
$ source bin/activate

# Windowsの場合
C:\> <venv>\Scripts\activate.bat
これを実行すると環境変数($PATH)が更新され、仮想環境が有効になります。cshやPowerShellでのやり方もありますので、詳しくはドキュメントをご確認ください。


仮想環境の状態を確認してみる

有効化された状態を確認してみます。
$ which python
/tmp/env1/bin/python

$ which pip
/tmp/env1/bin/pip
それぞれ仮想環境(env1フォルダ)のパスが使われていることが分かります。

site-packagesについても確認してみます。
$ python
>>> import sys, pprint; pprint.pprint(sys.path)
[
 '',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
 '/tmp/env1/lib/python3.6/site-packages'
]
パスの読み込みの一番最後に、仮想環境にあるsite-packagesが指定されていることがわかります。

また、現在のpipでのインストール状況も確認できます。
$ pip freeze
# Nothing...
何も無いことがわかります。


仮想環境から脱出する

最後に仮想環境から抜け出すところですが、以下のコマンドを実行します。
$ deactivate
これを実行すると環境変数などが有効化前の状態に戻ります。



参考資料とヘルプ

詳細は公式ドキュメントをご確認ください。

また、以下のコマンドでヘルプを確認することもできます。
$ python3 -m venv -h

今回の内容はyoheiMune/python-playground(Github)にもまとめました。


最後に

Pythonの仮想環境はいくつかの作り方があるので、それぞれを学んでみたいと思ってお勉強中です。「pyenvの使い方」や「pyenv-virtualenvの使い方」の記事もおすすめなので、興味があったらぜひぜひ見てみて下さい。

最後になりますが本ブログでは、Python、Swift、Go言語、フロントエンド、Linux、Node.js、インフラ、Java、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口を見つけられる」そんな目標でブログを書き続けています。今後も役立つネタを書いていきますので、ぜひ本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。