TL; DR:跳至最後一段,以了解如何增加交換空間並避免內存阻塞。另外,不要對numpy和scipy使用pip。
要在樹莓派上獲取最新版本的scipy,您需要從源代碼構建。主要原因是scipy依賴於需要在同一體系結構上進行編譯的C和fortran庫。通常 pip install
會為您獲取預構建的程序包,但實際上並沒有真正支持Raspberry Pi的ARM體系結構。
如果您只需要這樣做,那將相對容易(主要說明可以是在此處中找到,並在下面進行了匯總),但樹莓派還有一個附加問題,我只有經過一周的研究和反複試驗才意識到(如果您只需要此修復程序,請跳過最後) ,我認為這是由於可用的內存較少。
我將嘗試總結一下整個過程(這樣一來,人們不必像以前那樣四處逛逛)
要求
對建築結構有一些要求。就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相同的大小。
如此處和此處所述,可以通過鍵入以下內容來增加交換空間:
sudo / bin / dd if = / dev / zero of = / var / swap.1 bs = 1M count = 1024 sudo / sbin / mkswap /var/swap.1sudo chmod 600 /var/swap.1sudo / sbin / swapon /var/swap.1
,這將為您提供1GB的交換空間。
然後,最終可以使用
python3 setup.py buildpython3 setup進行構建和安裝。 .py install --user
(如果要在系統範圍內進行安裝,可以刪除-user標誌
,但需要root特權)。
最後,刪除多餘的交換並恢復默認值:
sudo swapoff /var/swap.1sudo rm /var/swap.1