科学分野のパッケージをインストールする#
科学分野のソフトウェアは、他のほとんどのものよりも複雑な依存関係を持つことが多く、異なる種類のハードウェアの利点を引き出すためや外部のソフトウェアのさまざまな部分と協調動作するためのオプションが複数存在することもしばしばです。
とりわけ 科学分野のPythonソフトウェア群 のほとんどのソフトウェアに基盤を提供する`NumPy <https://numpy.org/>`__ は、他の FORTRAN ライブラリと協調動作したり現代的なCPUで利用可能なさまざまなレベルのベクター演算命令を活用できるように構成可能です。
Numpy のバージョン 1.10.4 および SciPy のバージョン 1.0.0 以降は、 主要なオペレーティングシステム (WindowsとmacOSとLinux)向けに32 ビットと 64 ビットのビルド済みバイナリが wheel
形式でPyPIに準備されています。ただ、Windowsでは、SSE2命令セットに限定された ATLAS BLAS/LAPACK ライブラリに NumPy がリンクされているので、線形代数のパフォーマンスが最適化されていない可能性があります。
科学分野の Python ライブラリ (または、ソースコードからインストールする際にコンパイル環境を必要とするが、 PyPI にビルド済みの wheel ファイルが用意されていないような、他の全ての Python ライブラリ) を手に入れるには他にも数多くの代替方法があります。
ソースコードからビルドする#
NumPy (およびそれに依存するプロジェクトの多く) を wheel ファイルとして配布することを難しくする同じ複雑さが、自分でソースコードから作成することをも困難にしています。しかしながら、C言語やFORTRAN言語のコンパイラやリンカを説得するのに喜んで時間を費やそうという勇敢な人々にとっては、ソースコードからビルドすることは常にひとつの選択肢です。
Linux 配布パッケージ#
Linux のユーザなら、システムのパッケージマネージャを使えば NumPy やその他の科学分野のPythonソフトウェア群のコンパイル済みのパッケージが準備されていることも多々あります。
もし数ヶ月遅れでも構わないのであれば、これは良い選択肢でしょう (仮想環境を使っている場合はシステムの Python にインストールされた配布物にアクセスできるようにしておくのを忘れないでください) 。
Windows 版インストーラ#
現時点で wheel ファイルを公開していない(または公開できない)多くの Python プロジェクトでも、 PyPI 上か、または、そのプロジェクトのダウンロードページで、少なくとも Windows 版インストーラを公開しています。このようなインストーラを使えば、(他言語)拡張をローカルでビルドするための適切な環境を準備する手間を省くことができます。
このようなインストーラで用意されている(他言語)拡張は、たいてい、 python.org で公開されている CPython Windows インストーラと互換性のある形で公開されています。
Linux のシステムパッケージの時と同じく、Windows 版インストーラはシステムワイドの Python 環境にしかインストールしません -- つまり、仮想環境へのインストールはサポートしていないのです。この制約を回避するよくあるやり方は、仮想環境を使っている時にシステムワイドの Python 環境にインストールされた配布物へのアクセスを許可することです。
Wheel プロジェクトは、Windows bdist_wininst インストーラを wheel に変換するサブコマンド wheel convert も提供しています。
macOS インストーラとパッケージマネージャ#
Windows での状況と同様に、 (NumPy を含む) 多数のプロジェクトは、 python.org で公開される macOS版の Python バイナリと互換性のある macOS 版インストーラを公開しています。
macOS のユーザは、 Homebrew
のような Linux ディストロスタイルのパッケージマネージャも使うことができます。ScyPy サイトには、もっと詳しい Homebrew を使って SciPy を macOS にインストールする 方法の説明があります。
SciPy 配布物#
SciPy サイトには、利用・更新が簡単なフォーマットでエンドユーザ向けの SciPy の全機能を提供する いくつかの配布物 のリストがあります。
これらの配布物の内のいくつかは、標準的な pip
や virtualenv
を基礎にしたツールチェーンと互換性がないかもしれません。
Spack#
Spack は、複数のバージョン・設定・プラットフォーム・コンパイラをサポートできるように設計されたパッケージマネージャです。大規模スーパーコンピュータセンタや科学分野のアプリケーションチームではあるソフトウェアを異なる方法でビルドする必要が多々ありますが、そのようなニーズを満たすように作られています。Spack は Python に限らず、 C
・ C++
・ Fortran
・ R
やその他のプログラミング言語でも利用できます。Spackは破壊的ではありません; というのは、あるパッケージの新しいバージョンをインストールしても先にインストールされたものを壊すことはなく、非常に多くの設定(でインストールされたもの)が同一システム上で共存できるのです。
Spack は、ユーザがバージョンや設定のオプションを簡潔に表現する単純で力強い文法を提供します。パッケージファイルは純 Python で書かれていて、コンパイラ・ (MPI のような) 依存先の実装・バージョン・ビルドオプションをひとつのパッケージファイルの中で容易に入れ替えられるようにテンプレート化されています。Spack は、また、ユーザ環境からあるパッケージをロードしたりしなかったりできるように modules ファイルを生成します。
conda クロスプラットフォームパッケージマネージャ#
Anaconda は Anaconda 社が公開した Python 配布物です。Anaconda は、ビッグデータや科学分野で使用する一連のオープンソースソフトウェアの安定版を集めたものです。Anaconda のバージョン 5.0 では、デフォルトで約 200 のパッケージがインストールされていて、全部で 400-500 が Anaconda リポジトリからインストール可能です。
conda
は、複数のバージョンのソフトウェアのバイナリパッケージやその依存先パッケージをインストールして容易に切り替えて使えるようにする Anaconda に含まれる (BSDライセンスの) オープンソースのパッケージマネジメントシステム兼環境管理システムです。(これは) Windows・MacOS・Linuxで動作するクロスプラットフォームのツールです。conda を使えば、Python のパッケージに限らず、あらゆる種類のパッケージをまとめたり配布したりできます。Python に組み込まれた仮想環境を完全にサポートしています。 C 言語で書かれたライブラリさえも容易に独立した環境を生成できるようにすることで、conda は(仮想)環境を制限なく使えるもの(第1級オブジェクト)にしています。Python で書かれていていますが、Pythonに依存しているわけではありません。conda は Python そのものをパッケージのひとつとして扱うため conda update python とすることが可能で、Python のパッケージだけを扱う pip とは対照的です。conda は Anaconda や Miniconda (Python と conda が動作するだけの最小版のAnacoda) から手に入ります。