題:
如何在Raspberry Pi上安裝最新的Scipy版本
zurfyx
2013-07-07 03:11:38 UTC
view on stackexchange narkive permalink

我目前有Raspbian操作系統

,並且嘗試過:

  sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose  

,它工作正常,但安裝了舊版本(0.10)

並且:

  sudo apt-獲取安裝libatlas-base-dev gfortran python-pipsudo pip install scipy  

,在工作一個多小時後,出現了一些錯誤。

您做了什麼?在樹莓派上安裝Scipy 0.12?

您能給出確切的錯誤信息嗎?
另外,這是有關在Raspberry Pi上安裝scipy的博客文章:http://wyolum.com/numpyscipymatplotlib-on-raspberry-pi/
七 答案:
teoguso
2018-01-17 00:36:52 UTC
view on stackexchange narkive permalink

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  
我一直在用覆盆子解決幾天的內存問題。男人,你救了我的命。
@zurfyx恕我直言,此帖應標記為答案
感謝@jlandercy,,我希望這樣做,但是我怕OP放棄了該平台。
calocedrus
2019-03-06 14:34:06 UTC
view on stackexchange narkive permalink

使用輪子安裝pi。

  • 更新pip: pip install pip --upgrade (或 pip3 ),可能不是最新的密碼。 >,以適應您的python版本)
  • 轉到 https://www.piwheels.org/simple/scipy/
  • 選擇scipy版本,然後目標平台(例如,pi 0和早期pi的armv6l; 3的armv7l)
    • 示例:3型B上的 scipy-1.2.1-cp35-cp35m-linux_armv7l.whl
  • 例如使用以下代碼下載.whl文件
    • wget https://www.piwheels.org/simple/scipy/scipy- 1.2.1-cp35-cp35m-linux_armv7l.whl#sha256 = 270be300233af556e6ee3f55a0ae237df0cb65ac85d47559010d7a9071f2e878
  • 轉到下載 .whl 文件的位置並且: pip install-scipy-file.whl

注意事項

  • 這可以在虛擬環境(經過測試)中完成
  • 這比我見過或嘗試過的任何其他方法都快。
scruss
2014-01-05 00:10:21 UTC
view on stackexchange narkive permalink

正如goldilocks指出的那樣,Debian並不總是與最新版本的軟件包一起提供。有時它附帶真正古老的版本,例如Netpbm發行版,已經過期12年了。

有兩種處理方法:

  • 與之同住:您確定確實需要最新版本嗎?如果您的代碼需要最新版本的功能或錯誤修正,那麼這不是一個選擇。 Debian軟件包通常非常穩定,因此,如果您可以使用它來編寫代碼,則無需擔心維護自己的升級。這是 SciPy 0.10.0發行說明-這些功能會起作用嗎?

  • 從源代碼構建:最簡單的方法獲取 current 版本的源依賴關係是使用 apt-get build-dep -但它需要在 / etc / apt / sources中添加源代碼行.list

    • 要在 /etc/apt/sources.list 中添加以下行: deb-src http:// mirrordirector。 raspbian.org/raspbian/ wheezy main contrib non-free rpi (基本上與 deb 行相同,但帶有 deb-src 。如果不這樣做 t>
    • 現在發出 sudo apt-get build-dep python-scipy ;這會返回大量的軟件包,遠遠超出了您的帖子。您的錯誤消息可能是有關缺少依賴項的。
    • 嘗試再次構建scipy。
  • ol>

    請注意,仍然可能存在依賴項問題,因為當前版本(0.14左右)可能需要比Raspbian更了解的依賴軟件包。如果可以,請嘗試使用 checkinstall 之類的工具,該工具將告訴Raspbian您已安裝了具有特殊依賴項的較新版本,因此在常規升級中不應全力以赴。這個過程有點麻煩;有關如何執行此操作的一些提示,請參見:如何從源代碼構建Debian / Ubuntu軟件包?

    goldilocks
    2013-07-07 18:58:56 UTC
    view on stackexchange narkive permalink

    我不是python用戶,但是舊版本的(可能)原因是debian策略有時需要花費大量時間來更新版本,而且該軟件包可能是晦澀的(因此更新得更少) ,加上raspbian本身相對於debian來說還很晦澀(因此,那裡的軟件包更新得更少)。也就是說,這是可用資源的結果(維護軟件包的人,通常不是上游開發人員)。

    一個多小時的工作後出現一些錯誤

    大概是編譯一個或多個模塊時遇到的一個問題,儘管您實際上並沒有說出錯誤是什麼。我認為,編譯python模塊應該主要可以在pi上運行,但是請記住,這是一個不尋常的架構,它是專門針對它編譯的。不幸的是,這帶來了以前在某些部分或其他地方未註意到的錯誤的風險(如果您想在編譯語言中找到錯誤,某些python模塊的一部分在C中,請嘗試在幾種不同的平台上編譯代碼,哈哈...)。定位罪魁禍首將花費更多的精力,並要注意特定的錯誤。

    Xavier Alexandre
    2020-01-22 19:45:32 UTC
    view on stackexchange narkive permalink

    經過多次嘗試,我設法通過在2 Gb的Raspberry 4上將交換大小增加到2048,來使用“ pip install scipy”安裝scipy。

    Taras Vaskiv
    2018-11-16 04:19:03 UTC
    view on stackexchange narkive permalink

    1)將交換增加到1GB

      sudo dphys-swapfile swapoffsudo vim / etc / dphys-swapfile  

    CONF_SWAPSIZE = 1024

      sudo dphys-swapfile swapon  

    2)重新啟動以應用交換更改

      sudo重新啟動 

    3)比構建起來,這是我的Dockerfile

      FROM python:3-alpineMAINTAINER codertarasvaskivRUN apk add --no-cache g ++ gfortran python3-dev openblas-dev bashRUN pip install --no-cache-dir numpyRUN pip install --no-cache-dir scipyRUN pip install --no-cache-dir <my自定義軟件包>ENTRYPOINT [“ bash”]  

    所以花費10分鐘來構建numpy,而花費至少3個小時來在容器中構建scipy。

    Robin Dinse
    2019-06-30 06:35:14 UTC
    view on stackexchange narkive permalink

    在某些發行版(例如Arch Linux Arm)上,提供了預編譯的軟件包,例如 python-scipy python-numpy python-matplotlib 。根據發行版中默認的Python版本和您的要求,它也可能是 python3-* 。您可能需要從發行版存儲庫中而不是從 pip 中刪除以前安裝的軟件包及其對這些軟件包的依賴關係。 Python軟件包 pip-autoremove 對此很有幫助,因為 pip 不會刪除任何依賴項。



    該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
    Loading...