TL; DR: vai all'ultimo paragrafo per sapere come aumentare lo spazio di swap ed evitare l'intasamento della memoria. Inoltre, non utilizzare pip per numpy e scipy.
Per ottenere l'ultima versione di scipy sul raspberry Pi devi compilare dal sorgente. Il motivo principale è che scipy si basa su librerie compilate C e fortran, che devono essere compilate sulla stessa architettura. Di solito pip install
recupera i pacchetti precompilati per te, ma l'architettura ARM di Raspberry Pi non è realmente supportata.
Se questo fosse tutto ciò di cui hai bisogno, sarebbe relativamente facile (le istruzioni principali possono essere trovato qui e sono riassunti di seguito), ma c'è un ulteriore problema con il raspberry pi che ho realizzato solo dopo una settimana di ricerche e tentativi ed errori (salta alla fine se hai solo bisogno della correzione) , il che è dovuto, credo, alla piccola quantità di memoria disponibile.
Cercherò di riassumere l'intero processo (in modo che le persone non debbano saltare su Internet come ho fatto io) .
Requisiti
Ci sono alcuni requisiti per la creazione di scipy. Per quanto riguarda i pacchetti python, avrai bisogno di numpy
, cython
, setuptools
e (se vuoi creare la documentazione) Sphinx
. Dovresti provare a usare la versione di questi pacchetti fornita con Raspbian (in pacchetti come python3-numpy
), ma potrebbe essere necessario compilarli separatamente (OT).
Per quanto riguarda i requisiti di sistema, avrai bisogno di alcuni pacchetti che possono essere installati con apt-get
, vale a dire:
- A Libreria matematica BLAS / LAPACK con intestazioni di sviluppo, ad es
libopenblas-base
e libopenblas-dev
; python-dev
; - C e Fortran compilatori,
gcc
e gfortran
;
Infine ti serve il codice sorgente, che puoi scaricare da qui (Scipy 1.0.0 è l'ultima versione stabile mentre sto scrivendo) Quindi è solo una questione di tar -xzvf scipy-v1.0.0.tar.gzcd scipy
Compilazione del sorgente
A questo punto, se avvii il processo di compilazione, sembrerà andare bene, ma si bloccherà dopo pochi minuti.
Aggiunta di uno swap più grande spazio
Ciò è dovuto al fatto che lo script di compilazione occupa la totalità della RAM e della memoria di swap generando più processi (e replicando la memoria di conseguenza). Il problema è che nel Raspberry Pi lo spazio di swap è particolarmente piccolo (solo 100 MB credo), mentre la norma sarebbe averlo della stessa dimensione della RAM.
Come spiegato qui e qui, lo spazio di swap può essere aumentato digitando quanto segue:
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
che ti darà 1 GB di spazio di swap.
Quindi puoi finalmente costruire e installare con
python3 setup.py buildpython3 setup .py install --user
(puoi eliminare il --user flag
se vuoi installarlo a livello di sistema, ma avrai bisogno dei privilegi di root ).
Infine, si rimuove lo swap extra e si ripristina il valore predefinito:
sudo swapoff /var/swap.1sudo rm /var/swap.1