Wie aktualisiere ich mein RPi3 auf Python 3.6?

39

Python 3.6 ist gerade erschienen. Ich habe versucht, diese Anweisungen zu befolgen, um aus einem Tarball zu erstellen, aber der makeBefehl blieb hängen. Deshalb habe ich den Vorgang nach ungefähr 20 Minuten abgebrochen.

Ich bemerkte auch, dass während der ./configureAusführung des Befehls einige Prüfungen mit "Nein" endeten. Muss ich alles, was dies getan hat, noch einmal durchsehen und installieren?

Justin Palmer
quelle
Wahrscheinlich sollten Sie versuchen , diese: askubuntu.com/a/865569
Sagu

Antworten:

34

Wie aktualisiere ich mein RPi3 auf Python 3.6?

Ab heute ist nur die Installation aus dem Quellcode verfügbar. Die Anweisungen, auf die Sie verwiesen haben, sind für Version 3.6 korrekt. Wiederholen:

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

Auf einem frischen Raspbian auf Raspberry Pi 3 mit einer Klasse 10 SD-Karte (YMMV):

  • configure dauert über 2 Minuten
  • make dauert ca. 15 Minuten (es werden 8 Warnungen an die stderr ausgegeben)
  • sudo make install dauert ca. 2 Minuten

Muss ich alles, was dies getan hat, noch einmal durchsehen und installieren?

Wenn das configureSkript keinen Fehler meldet, lautet die Antwort: Nein, natürlich nicht.

configureführt eine Reihe von Überprüfungen durch und verwendet die Ergebnisse als Eingabe, um die zu erstellen Makefile. Die Ergebnisse hängen von der Architektur, den Hardwarefunktionen usw. ab. Dies sind keine Voraussetzungen für die erfolgreiche Kompilierung. Eine der ersten Prüfungen ist eine Prüfung für Python 3.6 selbst, für die das Ergebnis sicher sein wird no.

make -j4 verwendet einfach alle 4 RPI-Kerne im Make-Prozess (viel schneller)

techraf
quelle
Ich habe es nur versucht, aber es dauert ewig. configure hat 134min gedauert und make läuft nun seit über einer Stunde. Modell RPi3, neuester Raspbian. Irgendeine Idee, warum das so lange dauert?
Geheimnis
@Mystery Ihre SD-Karte ist wahrscheinlich zu langsam. Holen Sie sich etwas von einer guten Marke (Sandisk, Samsung usw.) und stellen Sie sicher, dass es mindestens Klasse 10 ist (Sandisk nennt es "Ultra").
Tarun
2
Obwohl ich diesen Spruch kommentieren möchte, müssen Sie daran denken, die erforderlichen Pakete zu installieren, BEVOR Sie kompilieren und installieren. Andernfalls funktioniert pip3 aufgrund von SSL-Fehlern nicht (ja, ich musste bei einer Installation auf meinem Zero W ungefähr 2 Stunden warten ). Die erforderlichen Pakete finden Sie hier: tecadmin.net/install-python-3-6-ubuntu-linuxmint
MortenMoulder
Ich habe einen Fehler mit Python 3.7.2 in rb pi 3 erhalten, der durch Ausführen sudo apt-get install libffi-devwie in dieser Antwort vorgeschlagen
behoben wurde.
24

Ich kann Ihnen nur empfehlen, sich den Berryconda- Paketmanager von jjhelmus anzusehen . Grundsätzlich handelt es sich um eine aktuellere Version der armv7l-Version von Miniconda , und das Python 3.6-Paket ist verfügbar, ohne dass es aus dem Quellcode kompiliert werden muss.

Wenn Sie bereits condainstalliert haben, können Sie auch einfach den Standard-RPI- Kanal von Berryconda hinzufügen und Python 3.6 installieren:

conda config --add channels rpi
conda install python=3.6
Gustavo Bezerra
quelle
Das ist viel einfacher als das Kompilieren aus dem Quellcode. Vielen Dank!
Ekevoo
1
Der Vollständigkeit conda create -n py36 python=3.6
halber
Berryconda, was für eine hervorragende Lösung!
DJK
@brittohaloran Mit diesem Kommentar wird Python 3.6.6 in der Conda- baseUmgebung installiert. Daher möchten Sie Ihrem erstellten Env wahrscheinlich einen aussagekräftigen Namen für das geben , was Sie in dieses Env einfügen möchten (etwas anderes als py36).
Kochfelder
Funktioniert wie ein Zauber, beste und einfachste Lösung
Grant
12

Verwenden Sie zum schnellen Erstellen von Raspberry Pi 3 den Parameter -j4 im Befehl make:

make -j4
Hector Oliveros
quelle
3
Schien ziemlich schnell! Ein oder zwei Minuten gegen 15+ Minuten ohne -j4 !!!
JxAxMxIxN
1
Was macht dieser Parameter?
Timbram
2
Der Parameter -j4 weist make an, 4 parallele Jobs zu starten, damit alle 4 CPU-Kerne gleichzeitig verwendet werden können.
Hdiogenes
4

Ich verwende ein RPi2 und habe es erfolgreich geschafft, das vorgeschlagene Verfahren zur Installation von python3.6 zu befolgen. Aber wie ein Kommentator betonte, hatte ich Probleme mit ssl, als ich versuchte, Pakete mit pip zu installieren .

Ich habe von einem anderen Thread zu einem anderen Thema erfahren, dass ich ssl installieren muss, bevor ich kompiliere.

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

die installation von scipy mit pip dauert sehr lange (stunden) und ich suche nach einer lösung. Ich werde darauf zurückkommen. Der Rest der Installation wird nun angehalten.

python3.6 -m pip install --user matplotlib

python3.6 -m pip install --user ipython

python3.6 -m pip install --user jupyter

python3.6 -m pip install --user pandas

python3.6 -m pip install --user sympy

python3.6 -m pip install --user nose

Der Vorteil, python3.6 ein zweites Mal kompilieren zu müssen, war ein viel schnelleres Kompilieren beim zweiten Mal. Andererseits dauert die Installation von numpy sehr lange, weshalb ich die Paketinstallation aufgeteilt habe.

vardaasen
quelle
Die Installation von numpy und scipy ist eine Hürde für sich und sollte aufgrund externer plattformspezifischer Abhängigkeiten wahrscheinlich aus dem Quellcode und nicht aus pip erfolgen. Siehe meine Antwort auf das Problem hier: raspberrypi.stackexchange.com/a/77856/79467 . Andererseits ist die Installation auf diese Weise nicht wirklich schneller, aber die Laufzeitgeschwindigkeit wird wesentlich sein.
Teoguso
1

Sie müssen alle Abhängigkeiten installieren. Alle diese Warnmeldungen, Fehlermeldungen und "Nein" -Prüfungen müssen behoben werden.

tlhIngan
quelle
Wie adressieren Sie zum Beispiel diese:, checking Solaris LFS bug... nooder checking getaddrinfo bug... no, oder checking for the Android API level... not Android? Und vor allem: Wie gehen Sie checking for python3.6... nobei der Installation von Python 3.6 vor?
Techraf
@techraf Diese speziellen sind in Ordnung. Es wird nach zu behebenden Problemen gesucht, nicht nach Abhängigkeiten. Der letzte prüft nur, ob Sie bereits Python 3.6 installiert haben, bevor Sie versuchen, es zu installieren.
tlhIngan
Also, obwohl Sie vorgeschlagen haben, dass all diese [] "Nein" -Überprüfungen behandelt werden müssen , waren diese spezifischen in Ordnung. Wie kann ich dann wissen, welche in Ordnung sind? Ich habe 170 "nos". Sind: checking for conio.h... nooder checking for pthread_init... nooder checking for libutil.h... nospezifisch und in Ordnung oder müssen sie angesprochen werden?
Techraf
Klingt so, als würde nach C-Headerdateien und Komponenten gesucht, die möglicherweise bereits installiert sind. In diesem Fall, denke ich, können Sie die "Prüfungen" ignorieren, es hilft nur dem Compiler, das Makefile zusammenzustellen, wie in einer anderen Antwort erläutert. Fehler und Warnungen müssen unbedingt behoben werden, aber diese Überprüfungen sind in Ordnung.
TlhIngan