科学パッケージのインストール

Page Status:Incomplete
Last Reviewed:2014-07-24

科学ソフトウェアは他のほとんどより複雑な依存関係を持つ傾向がある。それにはしばしば複数のビルドオプションがあり、各種ハードウェアを利用したり、様々な外部ソフトウェアと連携できるようになっている。

特に、 NumPyscientific Python stack のほとんどのソフトウェアの基礎をなしているが、これは様々な FORTRAN ライブラリと連携し、現代の CPU で利用できる様々なレベルのベクトル化命令を利用するように設定できる。

残念ながら、2013 年 12 月現在、NumPy のビルド/配布モデルのために、標準ツールはビルド済み NumPy バイナリの配布にはあまり適していない。ほとんどのユーザはどのバージョンが必要なのか知らないし、今のところ wheel 形式はインストール中にユーザがバージョンを指定できるようにはなっていないからだ。

この状況はいずれ解決されるはずだ。標準ツールが将来 NumPy のビルド/配布プロセスの複雑さを完全にサポートできるようになるか、あるいは NumPy 開発者が「許容できる公約数」ビルドを選び、それを PyPI 上で wheel として公開することで。

しかし当面は、いくつかの代替策によって科学 Python ライブラリ(またはソースからインストールするためのコンパイル環境を要求し、PyPI でビルド済み wheel を公開していないライブラリ)を入手できる。

ソースからのビルド

自分でソースからビルドするのは難しい。それは NumPy (と、それに依存する多くのプロジェクト)を wheel として配布するのと同様に複雑だからだ。しかし、C および FORTRAN コンパイラ/リンカとの格闘に時間を費やすのを厭わないなら、ソースからのビルドは常に選択肢としてある。

Linux 配布パッケージ

Linux ユーザの場合、システムパッケージマネージャが様々な科学ソフトウェア(NumPy および scientific Python stack の他の部分を含む)のコンパイル済みバージョンを用意していることがよくある。

それらのバージョンは数ヶ月単位で古いかもしれないが、それが受け入れられるならよい選択肢だろう(仮想環境を使う場合、システムの Python にインストールされたパッケージへのアクセスを許可しなければならないことに注意)。

Windows インストーラ

現在 wheel を公開していない(できない) Python プロジェクトの多くは、 PyPI またはプロジェクトのダウンロードページで少なくとも Windows インストーラは公開している。これらのインストーラを使うことで、ユーザはローカルで拡張をビルドするための環境構築をせずに済む。

これらのインストーラで提供される拡張は、python.org で公開されている CPython Windows インストーラと互換性があるのが普通だ。

自前で Windows インストーラを提供しない(一部はしているが)プロジェクトについては、カリフォルニア大学の Christoph Gohlke が Windows インス トーラコレクション を提供している。Windows 上の Python ユーザの多くがこれらのビルド済みバージョンが役に立ったと報告している。

Linux システムパッケージ同様、Windows インストーラはシステムの Python 環境のみにインストールを行う - 仮想環境へのインストールはサポートしない。この制限を回避する一般的な方法は、仮想環境使用時にシステムの Python にインストールされたパッケージへのアクセスを許可することだ。

wheel プロジェクトは、Windows の bdist_wininst インストーラを wheel に変換する wheel convert サブコマンドも用意している。

Mac OS X インストーラ/パッケージマネージャ

Windows における状況と同様、多くのプロジェクト (NumPy 含む)が Mac OS X 用インストーラを公開しており、それは python.org で公開されている Mac OS X 用 CPython バイナリと互換性がある。

Mac OS X ユーザは MacPorts のような Linux スタイルのパッケージマネージャも利用できる。SciPy サイトには、MacPorts による scientific Python stack のインストールに関する詳細がある。

SciPy 配布物

SciPy サイトには、完全な SciPy スタックを利用と更新が容易な形式でエンドユーザに提供する いくつかの配布物 のリストがある。

これらの配布物のいくつかは標準の pip, virtualenv ベースのツールチェインと互換性がないかもしれない。

Spack

Spack は複数のバージョン、構成、プラットフォーム、およびコンパイラをサポートする設計の柔軟なパッケージマネージャだ。大規模スーパーコンピューティングセンターや科学アプリケーションチームはしばしばソフトウェアを多くの異なった方法でビルドしなければならないが、これはそうした要求をサポートできるように作られた。Spack は Python に限定されない; C, C++, Fortran, R その他の言語向けのパッケージをインストールできる。それは非破壊的だ; あるパッケージの新バージョンをインストールしても、既存のインストール環境は壊れない。よって同じシステム上で多くの構成を共存させられる。

Spack は単純だが強力な構文を提供しており、ユーザはバージョンや構成を簡潔に指定できる。パッケージファイルは pure Python で書かれており、またテンプレート化されているため、単一パッケージファイルでコンパイラ、依存関係の実装(MPI など)、バージョン、およびビルドオプションを簡単に交換できる。Spack は モジュール ファイルも生成し、パッケージがユーザ環境でロード/アンロードできるようにする。

Conda クロスプラットフォームパッケージマネージャ

Anaconda は Continuum Analytics が公開している Python ディストリビューションだ。これはビッグデータと科学的用途のためのオープンソースパッケージの安定したコレクションだ。Anaconda 2.2 には約 100 のパッケージがインストールされており、また Anaconda リポジトリから合計 279 パッケージがインストールできる。

conda は Anaconda に含まれるオープンソース(BSD ライセンス)のパッケージ管理および環境管理システムだ。これにより、ユーザは複数バージョンのバイナリソフトウェアパッケージとその依存関係をインストールし、それらを簡単に切り替えられる。これは Windows, OSX, Linux で動くクロスプラットフォームツールだ。Conda はどんなものでもパッケージ化して配布でき、それは Python パッケージに限らない。これはネイティブ仮想環境を完全にサポートしている。Conda は環境を first-class として扱うため、C ライブラリに対してさえ独立した環境を容易に作れる。これは Python で書かれてはいるが、Python を意識することはない。Conda は Python 自身をもパッケージとして扱うため、 conda update python が可能だ。これは Python パッケージの管理しか行わない pip とは対照的だ。Conda は Anaconda と Miniconda (Python と conda のみを含む簡易版)で利用できる。