Edited at

venv: Python 仮想環境管理


venv について



  • venv を使うと pip によるパッケージの導入状態をプロジェクトごとに独立させることができる.

  • venv は virtualenv が Python 3.3 から標準機能として取り込まれたもの.別途ソフトウェアをインストールすることなく使用できるため,最も手軽に仮想環境を管理する方法の一つと言える.


    • 3 系は venv,2 系は virtualenv で管理すると同じように管理できるので良い.




Since Python 3.3, a subset of it has been integrated into the standard library under the venv module.


Virtualenv — virtualenv 16.6.1 documentation


  • Python 3.x.x 下に組み込まれた機能なので,Python 自体のバージョンは管理できない.

  • venv と同等な py"v"env (≠pyenv) というものがあるが,Puthon 3.5 以降 pyvenv は非推奨となっている.


注釈 pyvenv スクリプトは Python 3.6 で非推奨となり、代わりに python3 -m venv を使い、仮想環境を動かす Python インタープリタを取り違える可能性を防ぎやすくします。


venv — 仮想環境の作成

公式ページでは使い方がわかりにくいと感じたのでそこを中心に書く.


環境

$ python -V

Python 2.7.10

$ python3 -V
Python 3.6.1


利用手順


新しい環境の作成

$ cd [project dir]

$ python3 -m venv [newenvname]

venv という名前でプロジェクトディレクトリ直下に作成しておく($ python3 -m venv venv)のが良い.ディレクトリ移動 → venv アクティベート → 作業 という流れができたり,IDE によっては 1 つのプロジェクト内でソースコードと一緒に venv も管理できるので.


Activate


Linux,Mac

$ source [newenvname]/bin/activate

もしくは

$ . [newenvname]/bin/activate


Windows

$ .\[newenvname]\Scripts\activate


python の実行・バージョン確認

([newenvname])$ python -V

Python 3.6.1

プロンプトの頭に環境名が表示されている間,python コマンドでは作成した環境の python が実行される.

2系と3系の両方がインストールされており,python3などと2系なのか3系なのかを明示することで使い分けている場合でも,venv をアクティベートすると python コマンドでは作成した環境のものが実行されるようになる.


パッケージのインストール

([newenvname])$ pip install [package name]


作成した環境にインストールされているパッケージの確認

([newenvname])$ pip freeze

[package name1]==x.x.x
[package name2]==x.x.x



グローバルにインストールされているものと作成した環境にインストールされているものが一覧表示される.

Linter など,どの環境でも必ず利用するパッケージはグローバルの環境にインストールし,場合によって利用したりしなかったりするパッケージは venv で作成した環境にインストールすると良い.


Deactivate

([newenvname])$ deactivate


終了確認

$ python -V

Python 2.7.10


参考