TL; DR:最後の段落にスキップして、スワップスペースを増やし、メモリの目詰まりを回避する方法を確認してください。また、numpyとscipyにpipを使用しないでください。
ラズベリーパイでscipyの最新バージョンを取得するには、ソースからビルドする必要があります。主な理由は、scipyがコンパイルされたCライブラリとFortranライブラリに依存しており、同じアーキテクチャでコンパイルする必要があるためです。通常、 pip install
はビルド済みのパッケージをフェッチしますが、RaspberryPiのARMアーキテクチャは実際にはサポートされていません。
これだけで十分な場合は、比較的簡単です(主な手順は次のとおりです)。 ここにあり、以下に要約されています)が、ラズベリーパイには、1週間の調査と試行錯誤の後で初めて気付いた、追加の問題があります(修正が必要な場合は最後にスキップしてください) 、これは利用可能なメモリの量が少ないためだと思います。
プロセス全体を要約してみます(私のように人々がインターネットを飛び回る必要がないように)。 。
要件
scipyを構築するための要件がいくつかあります。 Pythonパッケージに関する限り、 numpy
、 cython
、 setuptools
、および(ドキュメントを作成する場合は) Sphinx
。Raspbianに付属しているこれらのパッケージのバージョン( python3-numpy
などのパッケージ)を試して使用する必要がありますが、個別にビルドする必要がある場合があります(OT)。
システム要件に関する限り、 apt-get
でインストールできるいくつかのパッケージが必要です。つまり:
- A開発ヘッダー付きのBLAS / LAPACK数学ライブラリ(例:
libopenblas-base
および libopenblas-dev
; -
python-dev
; - CおよびFortranコンパイラ、
gcc
および gfortran
;
最後に、ここ aからダウンロードできるソースコードが必要です。 >(Scipy 1.0.0は、私が書いている最新の安定バージョンです)。それなら、 tar -xzvf scipy-v1.0.0.tar.gzcd scipy
の問題です。
ソースのコンパイル
この時点で、ビルドプロセスを開始すると、問題なく動作しているように見えますが、数分後にハングします。
より大きなスワップを追加するスペース
これは、コンパイルスクリプトが、複数のプロセスを生成する(結果としてメモリを複製する)ことにより、RAMとスワップメモリの両方を占有するためです。問題は、Raspberry Piではスワップスペースが特に小さい(私が思うに100MBしかない)のに対し、通常はRAMと同じサイズにすることです。
hereおよび hereで説明されているように、スワップスペースは次のように入力して増やすことができます:
sudo / bin / dd if = / dev / zero of = / var / swap.1 bs = 1M count = 1024sudo / sbin / mkswap /var/swap.1sudo chmod 600 /var/swap.1sudo / sbin / swapon /var/swap.1
1GBのスワップスペースが提供されます。
これで、最終的に
python3 setup.py buildpython3setupを使用してビルドおよびインストールできます。 .py install --user
(システム全体にインストールする場合は、 -userフラグ
を削除できますが、root権限が必要です。 。
最後に、余分なスワップを削除してデフォルトに戻します。
sudo swapoff /var/swap.1sudo rm /var/swap.1