科学計算向けPython環境を簡単にインストールできる「Anaconda」入門
近年、科学技術計算で利用するプログラミング言語としてPythonが注目されている。ただ、Pythonを利用する環境を構築しようとすると、Python本体に加えてさまざまなライブラリのインストールが必要となる。その作業の手助けとなるのが「Anaconda」というPythonディストリビューションだ。
科学技術計算で広く使われるようになったPython
世の中にはさまざまなプログラミング言語が存在するが、人気のあるプログラミング言語というのは時代や適用分野に応じて大きく変わってくる。その中でも、アルゴリズムや理論の検証、収集したデータの処理といったいわゆる科学技術計算処理において最近人気なのがPythonだ。
科学技術計算においてはCやC++、Fortranといったプログラミング言語のほか、Matlabやその互換環境、Mathematica、Rといったソフトウェアが多く用いられていた。CやC++、Fortranなどはコンパイラなどの環境が比較的安価・容易に用意でき、資料も豊富で処理速度も速い。また、MatlabやMathematica、Rなどは豊富なライブラリやグラフ描画機能が提供されているため少ない手間で目的の処理を実装でき、その結果の視覚化も容易だ。ただ、MatlabやMathematicaは商用ソフトウェアであり、使用するためのライセンス料が安くないという難点もあった。
そんな中登場したのが、「NumPy」と呼ばれるPythonライブラリだ。NumPyはベクトルや行列を扱うためのクラスや各種アルゴリズムを実装したオープンソースのライブラリで、Pythonが元々備えているREPL(Read-eval-print loop)などの対話的実行環境と組み合わせることで、Matlabなどが備える対話的実行環境に近い操作感が実現できる。これはあくまで「近い」だけであり、Matlabなどと互換性があるわけでは無いのだが、PythonやNumPyがオープンソースで開発されていることもあってNumPyと組み合わせて利用できる演算ライブラリSciPyや、グラフ描画ライブラリmatplotlib、グラフィカルに操作できる対話的実行環境のIPythonといった周辺ライブラリの整備が活発に進んだ。さらに、GUIベースでPythonの機能を利用できるツールも登場した。その結果、現在ではさまざまな科学技術計算分野でPythonが利用されるようになっている。
また、最近では機械学習やそれを利用した人工知能といった技術が注目されているが、2010年代中ごろから次々と登場した機械学習ライブラリの多くはPythonと組み合わせて利用できるようになっている。そのため、人工知能関連技術の検証や利用のためにPythonを始めるユーザーも少なくない。
さまざまなPython関連ツールをまとめてインストールできる「Anaconda」
Pythonやここまでで触れた科学計算ライブラリの多くはオープンソースで開発されており、無料で入手・利用できる。ただ、その半面インストールや環境構築についてはやや手間がかかる傾向があった。特にWindows環境においては顕著で、それぞれインストーラやパッケージをダウンロードして実行する必要があった。そのため、こういった科学計算ライブラリとPython本体をまとめて配布するプロジェクトが登場した。これが今回紹介するAnacondaである。
AnacondaはAnaconda社(旧名Continuum Analytics)が提供するPythonディストリビューションで、対応プラットフォームはWindowsおよびmacOS、Linuxだ。
Anacondaの特徴としては、デフォルトでPythonに加えて科学計算に必要なライブラリやさまざまなユーティリティがインストールされることが挙げられる。これをインストールするだけで、とりあえずすぐにPythonや科学計算のための主要ライブラリが利用できるようになる。GUIでパッケージのインストールやアップデート、検索を行えるツールも同梱されている。
ただ、昨今のmacOS環境やほとんどのLinux環境においては標準でPythonがプリインストールされており、Windows環境においてもPythonの公式サイトでPythonのインストーラが提供されている。そのため、単にPythonを使いたいだけであればAnacondaをあえて利用する必要はない。
また、Anacondaのパッケージ管理ツールはPythonで広く使われているパッケージリポジトリである「PyPI」やそれを利用するeasy_installやpipといったパッケージ管理ツールと異なる仕組みでパッケージを管理している点には注意が必要だ。PyPIで管理されているパッケージやこれらのパッケージ管理ツールを利用したい場合、AnacondaでPython環境をインストールするとトラブルの元となる可能性がある。
とはいえ、科学技術計算で利用するのであればAnaconda環境だけでほぼ完結するため、あまり問題が発生することはないだろう。
以下では、Windows環境においてAnacondaを導入することを前提にその流れを説明していく。
Anacondaのインストール
AnacondaはAnaconda公式サイトのダウンロードページからダウンロードできる(図1)。ここではまずプラットフォーム(WindowsおよびmacOS、Linux)を選択し、続いてPythonのバージョンと64ビットか32ビットを選択することになる。Pythonのバージョンは2.7と3.6が選択できるのだが、Python 2.7は2020年でサポートが終了するため、特に理由が無ければPython 3.6版を選択すれば良いだろう。
Windows版では、ダウンロードしたインストーラを実行し、指示に従ってインストール先などを指定すれば良い(図2)。
このとき注意したいのが「Advanced Options」画面における環境変数の設定と、AnacondaのPythonをデフォルトにする設定だ(図3)。
まず1つめの「Add Anaconda to my PATH environment variable」にチェックを入れると、AnacondaでインストールされたPythonの実行ファイルが格納されているディレクトリがPATH環境変数に追加される。これによってコマンドプロンプトなどでそのままAnacondaのPythonが実行できるようになる。
「Register Anaconda as my default Python 3.6」については、チェックを入れるとPythonを利用するほかのプログラムがAnacondaでインストールしたPythonを利用するようになる。
どちらの設定も、AnacondaでインストールしたPythonのみを利用する場合は問題にならないが、すでに別の方法でPythonをインストールしている場合、もしくは後から別途Pythonをインストールしようとした場合にトラブルになる可能性があるので、そういった場合は注意したい。
また、インストール作業の途中で「Microsoft Visual Studio Code」のインストールを促す画面も表示されるが、これは必須ではないので「Skip」をクリックして省略して構わない(図4)。
Anacondaの各コンポーネント
Anacondaのインストールが完了すると、Windowsのスタートメニューに「Anaconda3」項目が追加され、ここからさまざまなツールやコマンドプロンプトを起動できる(図5)。
単純にPythonを利用するだけならスタートメニューに登録される「Anaconda Prompt」からコマンドプロンプトを起動し、ここでpythonコマンドを実行すれば良い。Anaconda PromptはAnacondaでインストールしたPythonを利用するための環境変数などを設定したうえでコマンドプロンプトを起動するものだ(図6)。
また、「Anaconda Navigator」はAnacondaでインストールしたツールを起動したり、追加のツールをインストールしたりするためのランチャーソフトウェアとなっている(図7)。後述する環境の管理もこのAnaconda Navigatorから行える。
初回起動時はやや起動に時間がかかるが、これは初期化処理のためで、2回目移行は多少起動時間が短縮される。
さて、Anacondaをインストールした状態では、Anaconda Navigatorからは次のツールが利用可能な状態になっている。
- jupyterlab
- notebook
- qtconsole
- spyder
まずjupyterlabとnotebookだが、これらはWebブラウザからアクセスして利用するPythonの実行環境だ。どちらもIPythonというPythonの実行環境(対話的シェル)をベースとしており、Pythonコードの対話的実行に加えて、数式やグラフ、画像などの表示機能も持つ。「Notebook」という単位でPythonコードやその実行結果などをまとめて管理できるのも特徴だ。ちなみにjupyterlabとnotebookの違いだが、notebookは単にNotebookを表示・作成・実行するためのツールで、jupyterlabはそれに加えてNotebookやPythonコードの管理機能も備えた統合開発環境的な位置付けとなっている。ただし、jupyterlabは記事執筆時点ではベータ版という位置付けであり、今後機能などが変更される可能性があるようだ。
jupyterlabもnotebookも、Anaconda Navigator上のそれぞれの「Launch」ボタンをクリックするとサーバーが起動し、WebブラウザでそれらにアクセスするためのURLが自動的に開かれる(図8、9)
それぞれUIは異なるものの、起動直後はディレクトリ(デフォルトではユーザーのホームディレクトリ)とそのディレクトリ内に含まれるファイルが一覧表示される。また、jupyterlabでは「Notebook」の「Python 3」を、notebookでは「new」をクリックするとそのディレクトリに新規Notebookを作成できる。
Notebookでは対話的にPythonコードを実行したり、Markdown形式でドキュメントを記述したり、画像を挿入したりといったことが可能だ(図10)。
作成したNotebookは「.ipynb」という拡張子で保存され、notebookでもjupyterlabでも開くことができる(図11)。
Jupyterlabもnobebookもバックグラウンドでサーバーが稼動しているため、Webブラウザやそのタブを閉じても、再度そのURL(たとえばhttp://localhost:8888/など)にアクセスすれば作業を継続できる。サーバーを停止させたい場合は、notebookではディレクトリ表示画面右上の「Quit」をクリックするとサーバーを終了できる。jupyterlabではこういった機能が現時点では実装されていないが、Anaconda Navigatorを終了する際に実行中のjupyterlabなどを同時に終了させるかどうかを確認するダイアログが表示され、ここで終了したいアプリケーションにチェックを入れて「Quit」をクリックすれば終了が可能だ(図12)。
なお、notebookやjupyterlabの機能について詳しくは次回記事で紹介する予定だ。
qtconsole(Jupyter QtConsole)はQt(クロスプラットフォームに対応するUIフレームワーク)で実装された独自のPython実行シェルで、notebookやjupyterlabのように対話的にPythonコードを実行できる(図13)。
spyderもqtconsoleと同様にQtで実装されたPythonの統合開発環境だ。こちらはqtconsole(IPythonコンソール)が統合されており、対話的なコードの実行も可能だが、どちらかというとPythonスクリプトの作成向けのツールであり、ステップ実行が可能なデバッガなどの機能が提供されている(図14)。
Anacondaでのパッケージ追加
Pythonでは、easy_installやpipといったパッケージマネージャを利用することで、パッケージのダウンロードやビルド、インストールを自動化できた。一方Anacondaで構築したPython環境では、Anacondaが提供するパッケージ管理機能を使ってパッケージをインストールすることが推奨される。
Anacondaでは、「Conda」というツールでパッケージの管理を行っている。easy_installやpipはPython環境に特化したツールだが、Condaはこれらとはやや異なり、さまざまなプログラミング言語や環境に対応したツールになっているのが特徴だ。Condaはコマンドラインから利用するツールなのだが、AnacondaではAnaconda NavigatorにCondaの機能が統合されており、「Environments」タブでパッケージの管理が行えるようになっている(図15)。
「Environments」タブを開くと、デフォルトではインストールされているパッケージのみがリスト表示される。ここで画面上部のドロップダウンリスト(デフォルトでは「Installed」になっている)をクリックして「Not installed」に変更すると、インストールできるパッケージが一覧表示される(図16)。
ここでインストールしたいパッケージにチェックを入れ、「Apply」をクリックすると依存するパッケージが表示される。これを確認して「Apply」をクリックすると、選択したパッケージと依存パッケージがインストールされる(図17、18)。
また、ドロップダウンリストで「Updatable」を選択すると、すでにインストールされているパッケージのうち、より新しいバージョンのパッケージがリリースされているものを確認できる(図19)。
アップデートできるパッケージについては、「Version」カラムに斜め上向きの矢印が表示されており、これをクリックすることでアップデート対象として指定できる。最後に「Apply」をクリックすれば、選択したパッケージがアップデートされる。
ちなみに、このパッケージリストは定期的に更新されるが、「Update index」ボタンをクリックすることでリストを最新版に更新できる。
異なる環境を構築する
condaにはパッケージの管理だけでなく、環境(Environments)の管理機能も用意されている。Anacondaのインストール直後はデフォルトで「base(root)」という環境が用意されているが、新たな環境を作成して切り替えることで、異なるバージョンのPythonやライブラリを簡単に使い分けることが可能になる。これは特定のバージョンのPythonやライブラリが必要となる場合に便利だ。
たとえば、新たにPython 2.7を使用する環境を作成するには、Anaconda Navigatorの「Environments」タブを開き、画面下にある「Create」をクリックする。「Create new environment」ダイアログが表示されるので、ここでPythonのバージョンとして「2.7」を選択し、適当な環境名を「Name」に入力して「Create」をクリックする(図20)。
ちなみに、今回試用した環境では選択できるPythonの環境はバージョン3.6系および3.5系、2.7系の3つだった。
環境の作成が完了すると、作成した環境を利用するよう設定されたコマンドプロンプト(Terminal)やPython環境を起動できるようになる(図21)。
また、notebookやjupyterlab、qtconsoleといったツールも環境を指定した上で起動できるようになる(図22)。たとえば画面上部の「Applications on」で今回作成した「python27」を選択すると、Python 2.7環境を使ってそれぞれのツールが起動されるようになる。
Python以外のソフトウェアをインストールする
Anacondaおよびcondaでは、Pythonや関連ライブラリ以外のソフトウェアをインストールすることもできる。たとえば「nodejs」パッケージをインストールすればNode.js、「perl」パッケージをインストールすればPerlの実行ファイルがインストールされる(図23)。
ただし、これらはnotebookやjupyterlabからは実行できず、コマンドプロンプト(terminal)環境から実行して利用する形になる。たとえばnodejsパッケージをインストールした場合、ターミナルを起動して「node」コマンドを実行することでNode.jsを利用できる(図24)。
そのほか、Makefile(makeコマンド)やMSYS2で提供されるGNUツール類もパッケージとして提供されている。MSYS2のGNUツールについては「m2-」という接頭辞が付いたパッケージ名となっている。
CONDA-FORGEを使う
Anacondaおよびcondaでは、公式リポジトリ(「defaults」チャンネル)以外のリポジトリも利用できる。代表的なものとしては、「conda-forge」という、コミュニティベースのリポジトリがある。もし必要なパッケージが公式リポジトリで提供されていない場合、こういった外部リポジトリもチェックしてみると良いだろう。
conda-forgeを利用するには、Anacoonda Navigatorの「Environments」タブを開き、「Channels」ボタンをクリックする。チャンネルを管理する画面が表示されるので、ここで「Add」をクリックし、続いて表示されるテキストボックスに「conda-forge」と入力する(図25)。
最後に「Update channels」をクリックすると追加したチャンネルが有効になり、conda-forgeからパッケージをインストールできるようになる。
利用できるリポジトリとしてはほかにもBiocondaなどがある。そのほか、独自にリポジトリを作成することも可能だ(Condaの「Creating custom channels」ドキュメント)。
コマンドプロンプトからの操作
前述のとおり、AnacondaではAnaconda Navigatorからパッケージのインストールや環境の作成が行えるが、これらはGUIからだけでなく「conda」コマンド経由でも行える。condaコマンドは、Anaconda Promptから起動したコマンドプロンプトから利用でき、次のようにサブコマンドで実行する処理を指定する。
> conda <サブコマンド> <引数>
たとえばインストールされているパッケージを確認するには、「list」サブコマンドを利用する(図26)。
用意されているコマンドは次の表1のとおりだ。
サブコマンド | 説明 |
---|---|
clean | 不要なパッケージやキャッシュを削除する |
config | condaの設定を変更する |
create | 環境を新規作成する |
help | ヘルプを表示する |
info | conda環境に関する情報を表示する |
install | 指定したパッケージをインストールする |
list | インストールされているパッケージを表示する |
package | パッケージ管理のための低レベル機能を利用する(実験的機能) |
remove | 指定したパッケージを削除する |
uninstall | removeサブコマンドのエイリアス |
search | パッケージを検索する |
update | パッケージのアップデートを行う |
upgrade | updateサブコマンドのエイリアス |
これ以外にも、condaでは特定のパッケージをインストールすることで機能を追加できるようになっている。利用できるすべてのコマンドは「conda help」コマンドを実行することで確認できる。また、サブコマンドに関するヘルプは「conda <サブコマンド> --help」のように「--help」オプションで確認できる。
condaコマンドでの環境切り替え
前述のとおり、Anacondaでは複数の環境を同時にインストールし、必要に応じて切り替えて利用できた。この操作はcondaコマンドでも行える。たとえば利用できる環境の確認は、「conda info -e」コマンドで行える。また、環境の切り替えは「activate <環境名>」で行える(図27)。
Anacondaのデフォルトでは「base」という環境が使われる。図27では、「activate python27」コマンドを実行し、「python27」環境に切り替えている。切り替えを行うとpythonコマンドで実行されるPythonのバージョンが変わっていることが分かる。
GUIを使わないAnaconda環境を構築する
もしコマンドプロンプトによる操作に慣れており、GUIは不要という場合、condaのみをインストールしてPython環境を構築することもできる。この環境は「Miniconda」と呼ばれており、ダウンロードページから専用のインストーラもダウンロード可能だ(図28)。
Minicondaでは必要最小限のPython環境のみがインストールされるため、ダウンロードするパッケージや必要なストレージ容量が少ないのが特徴だ。コマンドプロンプトによる操作やAnacondaに慣れているのであれば、こちらを利用するのも良いだろう。
特にWindows環境での利用におすすめ
本記事ではAnaconda環境の導入について紹介したが、AnacondaではGUI環境が充実しており、Windows環境でPythonを利用するのには便利だ。GUIでPythonを対話的に操作できるツールも同梱されており、Matlabなどのツールからも移行しやすいだろう。
いっぽうで、Anaconda/CondaではPythonで標準的に使われているパッケージ管理ツールとは異なる方法でパッケージを管理していることもあり、一般的なソフトウェア開発にはあまりおすすめできない点には注意したい。
次回は、Anacondaにも同梱されているGUIのPython環境「Jupyter」(IPython)について紹介する。