venv について
- venv を使うと pip によるパッケージの導入状態をプロジェクトごとに独立させることができる.
- venv は virtualenv が Python 3.3 から標準機能として取り込まれたもの.別途ソフトウェアをインストールすることなく使用できるため,最も手軽に仮想環境を管理する方法の一つと言える.
- 2 系を偶に使うという程度なら 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 インタープリタを取り違える可能性を防ぎやすくします。
公式ページでは使い方がわかりにくいと感じたのでそこを中心に書く.
環境
$ 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