Edited at

Anaconda で Python 環境をインストールする

Python やそのパッケージをインストールする方法はいくつかありますが、ここでは Anaconda を使ってインストールする方法を紹介します。

私の周りでは Anaconda で環境構築をすることと Python コミュニティ標準の方法をとることの是非についての議論をよく見かけます。自分の目的にあったものを選択すれば良いと思いますが、初心者にとってどちらが目的に叶うものかを判断するのは難しいことかもしれません。

以下にディストリビューターとして Anaconda (Continuum Analytics 社) が提供している価値について私見をまとめました。

一方で Python コミュニティ公式のバイナリーディストリビューションを提供するツールである wheel も充実してきました。

自分の目的にあったものを考えるきっかけにしてもらえればと思います。


Anaconda のインストール

以下のサイトから Anaconda をダウンロードできます。

インストールするときに Python のバージョンを選択する必要があります。Python のバージョンとして 2.7 と 3.x があります。

結論から言うと、何か特別な理由がなければ、新しいバージョンである 3.x の最新バージョン (現時点では 3.7) を選択すれば良いです。

Python は 2.x と 3.x で互換性がなく、2.x は保守モードになっていて、Python コミュニティとしては PEP 373 で2020年までサポートされることになっています。

過去の経緯で 2.x を使っている環境もまだサポート期間は残っていますが、今後新しい機能が 2.x に提供されることはありません。そのため、これから Python を始める方や新規に開発をするような状況では迷わず 3.x の最新バージョンを使うと良いと思います。

Windows、OS X、Linux 向けにそれぞれの OS 向けにインストーラーが用意されています。自分が使っているプラットフォームのインストーラーを選択してインストールします。


Windows でのインストール方法

Windows 向けのインストーラーは以下からダウンロードできます。

Windows 向けにはグラフィカルインストーラーのみが用意されています。ここでは 64bit 版のものをダウンロードしてインストール作業を進めます。

Anaconda3-5.3.0-Windows-x86_64.exe を実行してインストーラーを起動します。

管理者権限でインストールします。特にこだわりがなければそのままデフォルトでインストールしてしまって良いでしょう。デフォルト設定の状態でインストールすると以下の場所にインストールされます。

C:\Anaconda3

コマンドプロンプトを起動して python を実行して以下のように Anaconda でインストールした Python インタープリターが起動するのを確認します。

C:\Users\user>python

Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

試しに numpy をインポートしてみましょう。Anaconda 環境の numpy がインポートされているのが確認できると思います。

>>> import numpy

>>> numpy.__file__
'C:\\Anaconda3\\lib\\site-packages\\numpy\\__init__.py'


OS X でのインストール方法

OS X 向けのインストーラーは以下からダウンロードできます。

OS 向けにはグラフィカルとコマンドラインインストーラーの両方が用意されています。ここではグラフィカル版のものをダウンロードしてインストール作業を進めます。

Anaconda3-5.3.0-MacOSX-x86_64.pkg を実行してインストーラーを起動します。

特にこだわりがなければそのままデフォルトでインストールしてしまって良いでしょう。個人環境向けにインストールすると以下の場所にインストールされます。

$ ls ~/anaconda/

Navigator.app bin conda-meta envs etc include lib pkgs python.app share ssl

python を実行して以下のように Anaconda でインストールした Python インタープリターが起動するのを確認します。

$ python

Python 3.7.0 (default, Jun 28 2018, 07:39:16)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.

試しに numpy をインポートしてみましょう。Anaconda 環境の numpy がインポートされているのが確認できると思います。

>>> import numpy

>>> numpy.__file__
'/anaconda3/lib/python3.7/site-packages/numpy/__init__.py'

デフォルトで Anaconda インストーラーが環境変数の PATH を設定しています。システムにインストールしているコマンドと Anaconda がインストールしている同名コマンドの競合が気になる場合はこの設定を無効にして、Anaconda を使うときだけ PATH 設定をするようにしても良いでしょう。

$ vi ~/.bash_profile

# added by Anaconda3 5.3.0 installer
...
export PATH="/anaconda3/bin:$PATH"


Linux でのインストール方法

Linux 向けのインストーラーは以下からダウンロードできます。

Linux 向けにはコマンドラインインストーラーのみが用意されています。ここでは 64bit 版のものをダウンロードしてインストール作業を進めます。

$ bash Anaconda3-5.3.0-Linux-x86_64.sh

...
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/vagrant/.bashrc ? [yes|no]
[no] >>>

対話的にライセンス許諾の確認やインストール場所を聞かれますが、特にこだわりがなければそのままデフォルトでインストールしてしまって良いでしょう。最後に Anaconda がインストールした実行ファイルを優先的に使うように環境変数の PATH に含めるかが聞かれます。デフォルトでは no となっています。

PATH をデフォルトで変えることの是非は議論の分かれるところです。例えば、Anaconda は curl コマンドをインストールしますが、システムにインストールされている同コマンドを隠してしまうことになります。

$ which curl

/usr/bin/curl
$ export PATH=/path/to/anaconda3/bin:$PATH
$ which curl
~/anaconda3/bin/curl

他にもシステムにインストールされているコマンドと Anaconda がインストールしているものの競合が気になる場合はデフォルトでは PATH を設定せず、Anaconda でインストールした Python (とその環境) を使うときだけ 一時的に端末で PATH を設定するようにします。

$ export PATH=/path/to/anaconda3/bin:$PATH

デフォルト設定の状態でインストールすると以下の場所にインストールされます。

$ ls ~/anaconda3/

LICENSE.txt conda-meta etc libexec phrasebooks qml
ssl vscode_inst.py.log bin doc include man pkgs resources
translations x86_64-conda_cos6-linux-gnu compiler_compat envs
lib mkspecs plugins share var

PATH を設定したら Python を起動してみます。

$ python

Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.

試しに numpy をインポートしてみましょう。Anaconda 環境の numpy がインポートされているのが確認できると思います。

>>> import numpy

>>> numpy.__file__
'/path/to/anaconda3/lib/python3.7/site-packages/numpy/__init__.py'


Anaconda とは ...

Continuum Analytics 社 が提供している Python と conda というパッケージマネージャーを含む Python ディストリビューションです。サイト上では Python 以外にも R や Scala のパッケージも含んでいるように記載されていますが、主には Python のパッケージだと考えて良いと思います。

Anaconda はデータサイエンスに特化したプラットフォームを提供したいというのが目的のようです。そのため、Python でそういった分野向けによく使われる一連のパッケージ群が同梱されているのが特徴になります。

一般論として Python の世界では大量のデータを分析するツールやライブラリは、処理のパフォーマンスが重要視されることから、C/C++ といった言語で開発された拡張モジュール (Python インタプリタの拡張と埋め込み) を含むパッケージが多いです。これらのパッケージをインストールするには、ローカル環境で使っている OS 向けにコンパイルしてインストールする必要がありますが、Anaconda はコンパイル済みのパッケージを提供する (バイナリーディストリビューション) ことにより、ローカル環境でコンパイルすることなくインストールできます。

一般の開発者であれば、Python の C 拡張モジュールをコンパイルするための環境を構築することは難しくありません。しかし、研究者やデータサイエンティストにとってはそういった環境を構築するという作業は苦痛であるかもしれません。そういった開発環境を構築する煩雑さを取り除けるという利点から Anaconda というバイナリーディストリビューションが普及しています。


Miniconda とは ...

Python 標準のパッケージマネージャーとして pip というツールが提供されていますが、Anaconda の環境に慣れ親しんでいるなら conda をパッケージマネージャーとして使っても良いでしょう。

Anaconda はデータサイエンス向けに一連のパッケージ群を含むディストリビューションですが、一方で Python と conda のみを最小構成でインストールすることもできます。その最小構成のディストリビューションを Miniconda と呼んでいます。

Miniconda は以下からダウンロードしてインストールできます。


conda の簡単な使い方

パッケージマネージャーとしての conda を使ってみましょう。


インストール済みのパッケージ一覧を表示する

$ conda list

# packages in environment at /path/to/anaconda3:
#
_license 1.1 py36_1
alabaster 0.7.9 py36_0
anaconda 4.3.0 np111py36_0
anaconda-client 1.6.0 py36_0
anaconda-navigator 1.4.3 py36_0
...


パッケージを検索する

$ conda search django

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .......
django 1.6.5 py26_0 defaults
1.6.5 py27_0 defaults
1.6.5 py33_0 defaults
1.6.5 py34_0 defaults
...


パッケージをインストールする

$ conda install django

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /path/to/anaconda3:

The following NEW packages will be INSTALLED:

django: 1.10.5-py36_0

Proceed ([y]/n)? y


パッケージをアップグレードする

$ conda update lxml

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /path/to/anaconda3:

The following packages will be UPDATED:

lxml: 3.7.1-py36_0 --> 3.7.2-py36_0

Proceed ([y]/n)? y


パッケージを削除する

$ conda remove django

Fetching package metadata .......
Using Anaconda Cloud api site https://api.anaconda.org
Solving package specifications: ..........

Package plan for package removal in environment /path/to/anaconda3:

The following packages will be REMOVED:

django: 1.10.5-py36_0

Proceed ([y]/n)? y


異なるバージョンの Python 環境を構築する

@python_ufo さんと @y__sama さんにコメントで教えて頂きました。ありがとうございます。

conda の機能としては Python の仮想環境を構築できることに加えて、複数バージョンの Python の切り替えて扱えるようです。Anaconda を使わない場合、仮想環境の構築は virtualenv を使い、複数バージョンの Python の切り替えは pyenv が使われるケースが多いと思います。conda の機能でこれらの代替としても使えるようです。

Python 2.7 を用いる py27 という仮想環境を構築しています。

$ conda create -n py27 python=2.7 anaconda

いま使っている環境は以下のようにして調べられます。

$ conda info -e

# conda environments:
#
py27 /path/to/anaconda3/envs/py27
root * /path/to/anaconda3

Linux や OS X で py27 環境に切り替えるには source というシェルの組み込みコマンドを使って以下のように実行します。Windows は source コマンドがないので直接 activate コマンドを実行してください。

$ source activate py27  # $ activate py27 (on windows)

(py27) $

conda コマンドで環境が切り替わっていることを確認してみます。

(py27) $ conda info -e

# conda environments:
#
py27 * /path/to/anaconda3/envs/py27
root /path/to/anaconda3

(py27) $ python
Python 2.7.13 |Anaconda 4.3.0 (64-bit)| (default, Dec 20 2016, 23:09:15)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>>

py27 環境を抜けるには以下のように実行します。

(py27) $ source deactivate  # $ deactivate (on windows)

$ python
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>


conda のドキュメント

conda の詳細な使い方は公式ドキュメントの Using conda を参照してください。


anaconda-client の簡単な使い方

Anaconda Cloud というパッケージを管理するためのリポジトリが提供されています。このリポジトリの個人領域に任意のパッケージをアップロードして個人向けのパッケージ管理を行ったりもできるようです。パブリックプロジェクトのプランだと無償で利用でき、プライベートプランだと$7/月のようです。

Anaconda Cloud とやり取りするためのコマンドラインインターフェースとして anaconda-client が提供されています。anaconda-client をインストールすることで anaconda というコマンドを使って Anaconda Cloud を扱えます (Anaconda ディストリビューションをインストールした場合は anaconda-client もインストールされています) 。


conda で提供されていないパッケージを Anaconda Cloud から検索してインストールする

ここでは LittleHTTPServer というパッケージを例に説明します。

conda で提供されていないパッケージは検索しても何も表示されません。

$ conda search littlehttpserver

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .......

anaconda-client を使って Anaconda Cloud 上のリポジトリを検索してみます。-t (--package-type) オプションで conda または pypi のどちらかのパッケージ種別を指定できるようです。ここでは conda を指定します。

$ anaconda search -t conda littlehttpserver

Using Anaconda API: https://api.anaconda.org
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
Name | Version | Package Types | Platforms
------------------------- | ------ | --------------- | ---------------
auto/littlehttpserver | 0.1.4 | conda | linux-64
: http://bitbucket.org/t2y/littlehttpserver
t2y/LittleHTTPServer | 0.5.0 | pypi, conda | linux-64
: Little bit extended SimpleHTTPServer
Found 2 packages

誰かが公開してくれている littlehttpserver のパッケージが2件見つかりました。現時点での最新バージョンである 0.5.0 を選択します。ここでは t2y というユーザーが公開しているパッケージを選択します。

-c (--channel) オプションで以下のように指定してインストールコマンドを実行します。

$ conda install -c https://conda.anaconda.org/t2y littlehttpserver

Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment /path/to/anaconda3:

The following NEW packages will be INSTALLED:

littlehttpserver: 0.5.0-py36_0 t2y

Proceed ([y]/n)? y

パッケージ一覧から littlehttpserver keras がインストールされているのが確認できます。

$ conda list | grep littlehttpserver

littlehttpserver 0.5.0 py36_0 t2y

$ littlehttpserver --help
usage: littlehttpserver [-h] [-d DOCUMENT_DIR] [-i INDEX_DIRECTORY]
[-p PORT_NUMBER] [-v] [--protocol PROTOCOL]
[--servertype {process,thread}] [--version]

optional arguments:
-h, --help show this help message and exit
-d DOCUMENT_DIR, --dir DOCUMENT_DIR
set some document directories
-i INDEX_DIRECTORY, --indexdir INDEX_DIRECTORY
set arbitrary top directory
-p PORT_NUMBER, --port PORT_NUMBER
set server port number
-v, --verbose set verbose mode
--protocol PROTOCOL set protocol
--servertype {process,thread}
set server type
--version show program version


anaconda-client のドキュメント

anaconda-client の詳細な使い方は公式ドキュメントの Anaconda Cloud を参照してください。