Pytanie:
Jak zainstalować najnowszą wersję Scipy na Raspberry Pi
zurfyx
2013-07-07 03:11:38 UTC
view on stackexchange narkive permalink

Obecnie mam Raspbian OS

i próbowałem:

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

który działał dobrze, ale zainstalował starszą wersję (0.10)

Oraz:

  sudo apt- get install libatlas-base-dev gfortran python-pipsudo pip install scipy  

które po ponad godzinie pracy zakończyło się kilkoma błędami.

Co zrobiłeś, aby zainstalować Scipy 0.12 na swoim Raspberry?

Czy możesz podać dokładny komunikat o błędzie?
Tutaj jest również wpis na blogu o instalacji Scipy na Raspberry Pi: http://wyolum.com/numpyscipymatplotlib-on-raspberry-pi/
Siedem odpowiedzi:
teoguso
2018-01-17 00:36:52 UTC
view on stackexchange narkive permalink

TL; DR: przejdź do ostatniego akapitu, aby dowiedzieć się, jak zwiększyć przestrzeń wymiany i uniknąć zatykania pamięci. Nie używaj też pip dla numpy i scipy.

Aby uzyskać najnowszą wersję scipy na raspberry Pi, musisz zbudować ze źródeł. Głównym powodem jest to, że scipy opiera się na skompilowanych bibliotekach C i Fortran, które muszą być skompilowane na tej samej architekturze. Zwykle pip install pobierze dla ciebie gotowe pakiety, ale architektura ARM Raspberry Pi nie jest tak naprawdę obsługiwana.

Gdyby to było wszystko, czego potrzebujesz, byłoby to stosunkowo łatwe (główne instrukcje mogą być znalazłem tutaj i podsumowałem je poniżej), ale jest dodatkowy problem z raspberry pi, który zdałem sobie sprawę dopiero po tygodniu badań i prób i błędów (pomiń na koniec, jeśli potrzebujesz tylko poprawki) , co jest spowodowane, jak sądzę, niewielką ilością dostępnej pamięci.

Po prostu spróbuję podsumować cały proces (aby ludzie nie musieli skakać po Internecie tak jak ja) .

Wymagania

Istnieje kilka wymagań związanych z budowaniem scipy. Jeśli chodzi o pakiety Pythona, będziesz potrzebować numpy , cython , setuptools i (jeśli chcesz zbudować dokumentację) Sphinx . Powinieneś spróbować i użyć wersji tych pakietów, które są dostarczane z Raspbian (w pakietach takich jak python3-numpy ), ale może być konieczne oddzielne zbudowanie (OT).

Jeśli chodzi o wymagania systemowe, będziesz potrzebować kilku pakietów, które można zainstalować za pomocą apt-get , a mianowicie:

  • A Biblioteka matematyczna BLAS / LAPACK z nagłówkami programistycznymi, np libopenblas-base i libopenblas-dev;
  • python-dev;
  • C i Fortran kompilatory, gcc i gfortran;

Na koniec potrzebujesz kodu źródłowego, który możesz pobrać tutaj (Scipy 1.0.0 to najnowsza stabilna wersja, o której piszę) .Więc to tylko kwestia tar -xzvf scipy-v1.0.0.tar.gzcd scipy

Kompilowanie źródła

W tym momencie, jeśli rozpoczniesz proces budowania, będzie wyglądać dobrze, ale zawiesi się po kilku minutach.

Dodawanie większej wymiany space

Jest to spowodowane tym, że skrypt kompilujący zajmuje całość zarówno pamięci RAM, jak i pamięci wymiany, uruchamiając wiele procesów (i replikując pamięć w konsekwencji). Problem w tym, że w Raspberry Pi przestrzeń wymiany jest szczególnie mała (myślę, że tylko 100MB), podczas gdy normą byłoby posiadanie tego samego rozmiaru pamięci RAM.

Jak wyjaśniono tutaj i tutaj, przestrzeń wymiany można zwiększyć wpisując:

  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  

co da ci 1 GB miejsca wymiany.

Następnie można w końcu zbudować i zainstalować za pomocą

  python3 setup.py buildpython3 setup .py install --user  

(możesz usunąć --user flag , jeśli chcesz go zainstalować w całym systemie, ale będziesz potrzebować uprawnień administratora ).

Na koniec należy usunąć dodatkową wymianę i przywrócić wartość domyślną:

  sudo swapoff /var/swap.1sudo rm /var/swap.1  
Od kilku dni rozwiązuję ten problem z pamięcią z maliną. Mężczyźni uratowaliście mi życie.
@zurfyx IMHO ten post powinien być oznaczony jako odpowiedź
Dzięki @jlandercy, Liczyłem na to, ale obawiam się, że OP porzucił platformę.
calocedrus
2019-03-06 14:34:06 UTC
view on stackexchange narkive permalink

Zainstaluj, używając kół do pi. Może nie jest to najnowszy Scipy, ale jest dość aktualny.

  • update pip: pip install pip --upgrade (lub pip3 , dostosuj się do swojej wersji Pythona)
  • przejdź do https://www.piwheels.org/simple/scipy/
  • wybierz wersję scipy i platforma docelowa (np. armv6l dla pi zero i wcześniejsza pi; armv7l dla 3)
    • przykład: scipy-1.2.1-cp35-cp35m-linux_armv7l.whl na 3 modelu B
  • pobierz plik .whl
    • używając na przykład: wget https://www.piwheels.org/simple/scipy/scipy- 1.2.1-cp35-cp35m-linux_armv7l.whl # sha256 = 270be300233af556e6ee3f55a0ae237df0cb65ac85d47559010d7a9071f2e878
  • przejdź do miejsca, w którym pobrano .whl .whl i: pip install the-scipy-file.whl

Uwagi :

  • to może być wykonane w środowisku wirtualnym (właśnie przetestowane)
  • jest to o wiele szybsze niż jakakolwiek inna metoda, którą widziałem lub wypróbowałem.
scruss
2014-01-05 00:10:21 UTC
view on stackexchange narkive permalink

Debian, jak zauważył goldilocks, nie zawsze jest dostarczany z najnowszymi wersjami pakietów. Czasami jest dostarczany z naprawdę starymi wersjami, takimi jak dystrybucja Netpbm, która jest nieaktualna od ponad 12 lat.

Istnieją dwa sposoby radzenia sobie z tym:

  • Żyj z tym : czy na pewno musisz mieć najnowszą wersję? Jeśli twój kod wymaga funkcji lub poprawek błędów z najnowszej wersji, to nie jest to opcja. Pakiety Debiana są zwykle dość stabilne, więc jeśli możesz zmusić swój kod do pracy z nimi, nie będziesz musiał martwić się o utrzymywanie własnych aktualizacji. Oto Informacje o wydaniu SciPy 0.10.0 - czy te funkcje będą działać?

  • Twórz ze źródła : najłatwiejszy sposób aby uzyskać zależności źródłowe dla bieżącej wersji, należy użyć apt-get build-dep - ale wymaga linii źródłowej w twoim / etc / apt / sources .list :

    • Do /etc/apt/sources.list dodaj wiersz: deb-src http: // mirrordirector. raspbian.org/raspbian/ wheezy main contrib, non-free rpi (w zasadzie to samo co wiersz deb , ale z deb-src . Jeśli nie 't, apt będzie narzekać.)
    • Teraz wydaj sudo apt-get build-dep python-scipy ; zwraca to dużą listę pakietów, znacznie większą niż Twój post. Twój komunikat o błędzie mógł dotyczyć brakujących zależności.
    • Spróbuj ponownie zbudować scipy.
  • Pamiętaj, że nadal mogą występować problemy z zależnościami, ponieważ aktualna wersja (0.14 lub więcej) może wymagać nowszych pakietów zależnych, niż Raspbian zna. Jeśli możesz, spróbuj użyć narzędzia takiego jak checkinstall , które powie Raspbianowi, że zainstalowałeś nowszą wersję ze specjalnymi zależnościami, dzięki czemu nie powinna zostać zdeptana podczas rutynowych aktualizacji. Ten proces jest trochę skomplikowany; kilka wskazówek, jak to zrobić, znajduje się tutaj: Jak zbudować pakiet Debiana / Ubuntu ze źródeł?

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

    Nie jestem użytkownikiem Pythona, ale (prawdopodobnym) powodem starej wersji jest to, że zgodnie z polityką Debiana aktualizacja wersji zajmuje czasem zbyt dużo czasu, a pakiet może być niejasny (stąd aktualizacja jest jeszcze mniejsza) , plus sam raspbian jest dość niejasny w stosunku do Debiana (stąd pakiety tam aktualizowane są jeszcze mniej). To znaczy, jest to konsekwencja dostępnych zasobów (ludzi, którzy opiekują się pakietami, którzy zwykle nie są zewnętrznymi programistami).

    po ponad godzinie pracy zakończyło się pewnymi błędami

    Przypuszczalnie jest to problem przy kompilacji jednego lub więcej modułów, chociaż tak naprawdę nie powiedziałeś, jaki był błąd. Wydaje mi się, że kompilowanie modułów w Pythonie powinno działać głównie na pi, ale pamiętaj, że jest to niezwykła architektura dla takich, z bibliotekami skompilowanymi specjalnie dla niej. Niestety, wiąże się to z ryzykiem wcześniej niezauważonych błędów w jakiejś części lub innej powierzchni (jeśli chcesz znaleźć błędy w skompilowanym języku - części niektórych modułów Pythona są w C - spróbuj skompilować kod na kilku różnych platformach, lol ...). Zlokalizowanie winowajcy wymagałoby trochę więcej pracy i zajęcie się konkretnymi błędami.

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

    Udało mi się zainstalować scipy z "pip install scipy", po wielu próbach, zwiększając rozmiar wymiany do 2048 na Raspberry 4 z 2 Gb.

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

    1) Zwiększ swap do 1 GB

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

    CONF_SWAPSIZE = 1024

      sudo dphys-swapfile swapon  

    2) Uruchom ponownie, aby zastosować zmiany wymiany

      sudo reboot  

    3) Niż build, oto mój plik Dockerfile

      Z pythona: 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 custom package>ENTRYPOINT ["bash"]  

    Więc to zajmuje 10 minut na zbudowanie numpy, a prawie 3 godziny na zbudowanie scipy w kontenerze.

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

    W niektórych dystrybucjach (np. Arch Linux Arm) dostępne są wstępnie skompilowane pakiety, takie jak python-scipy , python-numpy i python-matplotlib . W zależności od wersji Pythona, która jest domyślna w dystrybucji i Twoich wymagań, może to być również python3- * . Prawdopodobnie będziesz musiał usunąć wcześniej zainstalowane pakiety i ich zależności, aby te pakiety zostały zainstalowane z repozytoriów dystrybucji zamiast z pip . Pakiet Pythona pip-autorove może być w tym pomocny, ponieważ pip nie usuwa żadnych zależności.



    To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
    Loading...