Jak zaktualizować RPi3 do Pythona 3.6?


39

Właśnie wyszedł Python 3.6. Próbowałem postępować zgodnie z tymi instrukcjami, aby zbudować z tarballa, ale zawiesił się on na makepoleceniu, więc zakończyłem proces po około 20 minutach.

Zauważyłem również, że w trakcie wykonywania ./configurepolecenia kilka kontroli zakończyło się „nie”. Czy muszę przeglądać i instalować wszystko, co się tak stało?


Prawdopodobnie powinieneś spróbować: askubuntu.com/a/865569
Sagu

Odpowiedzi:


34

Jak zaktualizować RPi3 do Pythona 3.6?

Na dzień dzisiejszy dostępna jest tylko instalacja ze źródła. Podane instrukcje są poprawne dla wersji 3.6. Powtarzać:

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xzvf Python-3.6.0.tgz
cd Python-3.6.0/
./configure
make -j4
sudo make install

Na świeżym Raspbian na Raspberry Pi 3 z kartą SD klasy 10 (YMMV):

  • configure zajmuje ponad 2 minuty
  • make zajmuje około 15 minut (generuje 8 ostrzeżeń dla stderr)
  • sudo make install zajmuje około 2 minut

Czy muszę przeglądać i instalować wszystko, co się tak stało?

O ile configureskrypt nie zgłosi błędu, odpowiedź brzmi: nie, oczywiście, że nie.

configurewykonuje serię kontroli i wykorzystuje wyniki jako dane wejściowe do utworzenia Makefile. Wyniki zależą od architektury, funkcji sprzętowych itp. Nie są to wymagania dotyczące udanej kompilacji. Jednym z pierwszych testów jest sprawdzenie samego Pythona 3.6, dla którego z pewnością będzie wynik no.

make -j4 po prostu używa wszystkich 4 rdzeni rpi w procesie tworzenia (znacznie szybciej)


Właśnie próbowałem tego, ale to trwa wiecznie. Konfiguracja zajęła 134 minuty, a make działa już ponad godzinę. Model RPi3, najnowszy raspbian. Wiesz, dlaczego to trwa tak długo?
Tajemnica

@ Tajemnica Twoja karta SD jest prawdopodobnie zbyt wolna. Zdobądź coś od dobrej marki (Sandisk, Samsung itp.) I upewnij się, że jest to przynajmniej klasa 10 (Sandisk nazywa to „Ultra”).
Tarun

2
Pomyślałem, że skomentuję to powiedzenie, musisz pamiętać o zainstalowaniu wymaganych pakietów PRZED kompilacją i instalacją, w przeciwnym razie pip3 nie będzie działał z powodu błędów SSL (tak, musiałem czekać około 2 godzin na instalację na moim Zero W ). Wymagane pakiety są tutaj: tecadmin.net/install-python-3-6-ubuntu-linuxmint
MortenMoulder

Wystąpił błąd w Pythonie 3.7.2 w rb pi 3, rozwiązany przez wykonanie sudo apt-get install libffi-devzgodnie z sugestią zawartą w tej odpowiedzi stackoverflow.com/a/48045929/2343488
juliocesar

24

Gorąco polecam sprawdzeniu Berryconda menedżera pakietów przez jjhelmus . Jest to w zasadzie bardziej aktualna wersja wersji Armv7l Miniconda i ma dostępny pakiet Python 3.6 bez konieczności kompilacji ze źródła.

Alternatywnie, jeśli już condazainstalowałeś, możesz po prostu dodać domyślny kanał rpi Berrycondy i zainstalować Python 3.6:

conda config --add channels rpi
conda install python=3.6

Cóż, jest to o wiele prostsze niż kompilowanie ze źródła. Dzięki!
Ekevoo,

1
Aby uzyskać kompletność, wykonaj toconda create -n py36 python=3.6
brittohalloran,

Berryconda, co za doskonałe rozwiązanie!
DJK

@brittohaloran W tym komentarzu instaluje Python 3.6.6 w baseśrodowisku conda , więc prawdopodobnie chcesz nazwać twoją stworzoną env czymś opisującym to, co planujesz umieścić w tej env (coś innego niż py36).
płyty kuchenne

Działa jak urok, najlepsze i najprostsze rozwiązanie
Grant

12

Aby szybko zbudować Raspberry Pi 3, użyj parametru -j4 w poleceniu make:

make -j4

3
Wydawało się dość szybko! Minuta lub dwie vs 15+ minut bez -j4 !!!
JxAxMxIxN

1
Co robi ten parametr?
timbram

2
Param -j4 mówi make, aby uruchomić 4 równoległe zadania, dzięki czemu może używać wszystkich 4 rdzeni procesora w tym samym czasie.
hdiogenes

4

Używam RPi2 i udało mi się wykonać sugerowaną procedurę, aby zainstalować Python3.6. Ale jak zauważył komentator, miałem problemy z ssl, kiedy próbowałem zainstalować pakiety za pomocą pip .

Nauczyłem się z innego wątku na inny temat , że muszę zainstalować ssl przed kompilacją.

sudo apt-get install libssl-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xzvf Python-3.6.0.tgz
cd Python-3.6.0/
./configure
make
sudo make install
python3.6 -V
python3.6 -m pip install --upgrade pip
python3.6 -m pip install --user numpy 
sudo apt-get update
sudo apt-get upgrade

sudo apt-get install libatlas-base-dev gfortran

python3.6 -m pip install --user scipy

instalacja scipy z pipem zajmuje bardzo dużo czasu (godziny) i szukam rozwiązania. Wrócę do tego. reszta instalacji jest teraz wstrzymana.

python3.6 -m pip install --user matplotlib

python3.6 -m pip install --user ipython

python3.6 -m pip install - użytkownik jupyter

python3.6 -m pip install --user pandy

python3.6 -m pip install - symulacja użytkownika

python3.6 -m pip install - nos użytkownika

Zaletą kompilacji Pythona za drugim razem było znacznie szybsze kompilowanie za drugim razem. Z drugiej strony instalacja numpy zajmuje dużo czasu i dlatego podzieliłem instalację pakietu.


Instalacja numpy i scipy jest sama w sobie przeszkodą i prawdopodobnie powinna być wykonana ze źródła, a nie z pip, ze względu na zależności specyficzne dla platformy zewnętrznej. Zobacz moją odpowiedź na problem tutaj: raspberrypi.stackexchange.com/a/77856/79467 . Z drugiej strony instalacja nie jest tak naprawdę szybsza, ale szybkość działania będzie znacznie większa.
teoguso

1

Musisz zainstalować wszystkie zależności. Wszystkie te ostrzeżenia, komunikaty o błędach i kontrole „nie” muszą zostać rozwiązane.


Jak adresujesz na przykład:: checking Solaris LFS bug... nolub checking getaddrinfo bug... nolub checking for the Android API level... not Android? A co najważniejsze: jak można rozwiązać ten checking for python3.6... nopodczas instalacji Pythona 3.6?
techraf

@techraf Te konkretne są w porządku. Sprawdza rzeczy do naprawienia, a nie zależności. Ostatni sprawdza tylko, czy masz już Python 3.6, zanim spróbujesz go zainstalować.
tlhIngan

Więc chociaż zasugerowałeś „ Wszystkie te []„ nie ”czeki muszą zostać rozwiązane ”, te konkretne były w porządku. Skąd mam wiedzieć, które są w porządku? Mam 170 „nosów”. Czy:, checking for conio.h... nolub checking for pthread_init... no, checking for libutil.h... nokonkretnie i ok, czy też należy się zająć?
techraf

Wygląda na to, że sprawdza pliki nagłówkowe C i komponenty, które mogą być już zainstalowane. W tym przypadku myślę, że możesz zignorować „kontrole”, to po prostu pomaga kompilatorowi złożyć makefile, jak wyjaśniono w innej odpowiedzi. Błędy i ostrzeżenia należy z pewnością rozwiązać, ale te kontrole są w porządku.
tlhIngan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.