LoginSignup
27
31

More than 5 years have passed since last update.

Python 3.6 時代(2018年2月時点)の環境構築方法を使い分ける指針 (venv, virtualenv, Anaconda)

Last updated at Posted at 2018-02-10

Python の環境構築方法は venv, virtualenv, Anaconda などいろいろあると思いますが、どのように使い分けるか。Python 3.6 時代(2018年2月時点)における私なりの考えをまとめてみました。macOS 環境を想定しています。

使い分ける指針

基本原則

バージョン

原則、Python 3 を使うようにします。
Python 2 はサポートされるのが 2020 年まで。Python3 だとどうしても対応できない時だけ使い、極力使わないようにします。

システムにデフォルトでインストールされている Python

パッケージ追加などの変更作業はしないようにし、極力汚さないようにします。理由は、システムが使用している Python に悪影響を与えることを避けるためです。仮想環境を作成し、仮想環境内でパッケージの管理を行います。

各環境構築方法の使い分け

前提として、OS の Python をインストール状況は次の通りとします。

  • Python 2.7.x がプレインストールされているものとします。
  • OS のパッケージマネージャで Python 3.6.x を入れておきます。
// macOS の場合。新規インストール
$ brew install python3
// 最新版にアップグレード
$ brew upgrade python3

venv, virtualenv, Anaconda の使い分けは次の通りにしています。

  • Python 3.6.x を使う場合は、Python 3.6.x の venv を使って仮想環境を作成します。
  • Python 2.7.x を使う場合は、virtualenv を使って仮想環境を作成します。
  • Anaconda は Docker 化します。Python 2.7.x, 3.6.x 以外を使いたい場合は、それ用の Anaconda コンテナイメージを作成します。

では、どうして上記の使い分けにしているのか?
各環境構築方法の特徴を見ながら説明していきます。

Python3.6 の venv

環境構築方法の中でこれを優先して使うのは、Python の世界での標準的な方法になるべく従うため。Pythonチュートリアルでも venvが紹介されています。以下、venv の位置づけを示すために公式マニュアルから引用します。

Python標準ライブラリ

Python 3.3 と 3.4 では、仮想環境の作成に推奨していたツールは pyvenv でしたが、Python 3.6では非推奨です。
バージョン 3.5 で変更: 仮想環境の作成には、 venv の使用をお勧めします。

What’s New In Python 3.3

PEP 405: Virtual Environments
仮想環境(Virtual environment)は隔離されたPython環境を作成する手助けをします。...(略)... このコンセプトと実装は、人気のサードパーティパッケージである virtualenv を元にしていますが、インタプリタコアとの統合による恩恵を受けています。この PEP はプログラムからのアクセス用の venv モジュールと、コマンドラインからのアクセスと管理向けの pyvenv スクリプトを追加します。

出来ること
  • 仮想環境ごとに pip パッケージの管理を切り出せる
出来ないこと
  • Python 自体のバージョン切り替え
使い方
// 環境名
$ python3 -m venv 仮想環境名

// 環境の有効化
$ source 仮想環境名/bin/activate
(仮想環境名) $ python --version
Python 3.6.4

// 環境の無効化
(仮想環境名) $ deactivate

virtualenv

venv だと、Python 2.7.x を使えないので、その対応のために virtualenv を使います。

virtualenv が出来ること
  • Python のバージョンを指定できる(既にインストールされているもののみ)
  • 仮想環境ごとに pip パッケージの管理を切り出せる
使い方
// virtualenv をインストールする。
// OS の pip3 でインストールするのは virtualenv だけにする。
$ pip3 install virtualenv

// Python バージョンを指定して仮想環境を作る場合は --python で指定する。 
// 最後の python2.7.14 は仮想環境名。任意の名前で良い。
$ virtualenv --python=/usr/local/bin/python2.7 python2.7.14

Anaconda

便利なソフトなのですが、独自のディストリビューションなのと、一部システムコマンドのパスを覆い隠すデメリットがあるので、Docker で対応しています。

メリット
  • データサイエンス系のパッケージや JupyterLab など便利なツール群が初めから入っている。
  • conda コマンドで仮想環境を柔軟に作成できる。Python バージョンの指定も可能。
デメリット
  • Python だけでなく、Anaconda が内蔵している多数のコマンドへのパスが通ってしまう。
インストール方法

Docker 環境で使う場合は、「Anaconda の JupyterLab を Docker で使う」で記事にしてみました。
Docker を使わない場合は、公式ドキュメントをご参照ください。インストーラをダウンロードし、インストーラの指示に従うだけで入るはずです。

私見

もっといい使い分け方もあるかもしれません。そして、それは時代とともに変わっていくものだとも思います。ただ、基本的な考え方として、次の 2 点を守るのが肝要だと考えています。(勉強不足で標準の方法に従えていないこともよくあるのですが・・・)

  • なるべく標準の方法に従う
  • OS を汚すのは必要最小限にする

参考

Python標準ライブラリ: venv
Pythonチュートリアル: 12. 仮想環境とパッケージ
PEP 405 -- Python Virtual Environments
Anaconda: Installation
Pythonの環境構築を自分なりに整理してみる
pyenvが必要かどうかフローチャート

27
31
0

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
27
31