TL; DR: Fahren Sie mit dem letzten Absatz fort, um zu erfahren, wie Sie den Swap-Speicherplatz erhöhen und Speicherverstopfungen vermeiden können. Verwenden Sie Pip auch nicht für Numpy und Scipy.
Um die neueste Version von scipy auf dem Himbeer-Pi zu erhalten, müssen Sie aus dem Quellcode erstellen. Der Hauptgrund ist, dass scipy auf kompilierten C- und fortran-Bibliotheken basiert, die auf derselben Architektur kompiliert werden müssen. Normalerweise werden pip install
vorgefertigte Pakete für Sie abgerufen, aber die ARM-Architektur von Raspberry Pi wird nicht wirklich unterstützt.
Wenn dies alles wäre, was Sie brauchen, wäre es relativ einfach (die wichtigsten Anweisungen finden Sie hier und sind unten zusammengefasst), aber es gibt ein zusätzliches Problem mit dem Himbeer-Pi, das ich erst nach einer Woche Recherche und Ausprobieren erkannt habe (überspringen bei das Ende, wenn Sie nur das Update benötigen), was meiner Meinung nach auf die geringe Menge an verfügbarem Speicher zurückzuführen ist.
Ich werde nur versuchen, den gesamten Prozess zusammenzufassen (damit die Leute nicht wie ich im Internet herumspringen müssen).
Bedarf
Es gibt einige Anforderungen für das Bauen von Scipy. Soweit Python - Pakete gehen, müssen Sie numpy
, cython
, setuptools
, und (wenn Sie die Dokumentation aufbauen wollen) Sphinx
. Sie sollten versuchen, die mit Raspbian gelieferte Version dieser Pakete zu verwenden (in Paketen wie python3-numpy
), sie müssen jedoch möglicherweise separat erstellt werden (OT).
Für die Systemanforderungen benötigen Sie einige Pakete, mit denen Folgendes installiert werden apt-get
kann:
- Eine BLAS / LAPACK-Mathematikbibliothek mit Entwicklungsheadern, z. B.
libopenblas-base
und libopenblas-dev
;
python-dev
;;
- C- und Fortran-Compiler
gcc
und gfortran
;
Schließlich benötigen Sie den Quellcode, den Sie hier herunterladen können (Scipy 1.0.0 ist die neueste stabile Version, die ich gerade schreibe). Dann ist es nur noch eine Frage von
tar -xzvf scipy-v1.0.0.tar.gz
cd scipy
Quelle kompilieren
Wenn Sie zu diesem Zeitpunkt den Erstellungsprozess starten, scheint dies in Ordnung zu sein, hängt jedoch nach einigen Minuten ab.
Hinzufügen eines größeren Swap-Space
Dies liegt daran, dass das Kompilierungsskript die Gesamtheit des Arbeitsspeichers und des Auslagerungsspeichers belegt, indem mehrere Prozesse erzeugt werden (und der Speicher folglich repliziert wird). Das Problem ist, dass im Raspberry Pi der Swap-Speicher besonders klein ist (nur 100 MB, glaube ich), während die Norm darin besteht, dass er die gleiche Größe Ihres RAM hat.
Wie hier und hier erläutert , kann der Swap-Bereich vergrößert werden, indem Folgendes eingegeben wird:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
Dadurch erhalten Sie 1 GB Swap-Speicherplatz.
Dann kann man endlich mit bauen und installieren
python3 setup.py build
python3 setup.py install --user
(Sie können das löschen, --user flag
wenn Sie es systemweit installieren möchten, aber Sie benötigen Root-Rechte).
Zum Schluss entfernen Sie den zusätzlichen Swap und stellen den Standard wieder her:
sudo swapoff /var/swap.1
sudo rm /var/swap.1