LoginSignup
1464
1447

More than 3 years have passed since last update.

venv: Python 仮想環境管理

Last updated at Posted at 2017-05-12

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 インタープリタを取り違える可能性を防ぎやすくします。

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

参考

1464
1447
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1464
1447