Python Upgrade von 3.5.2 auf 3.9.0
Posted: 03 Dec 2020, 13:18
Moin Sven,
Hallo restliche Mitleser,
auf dem RevPi läuft standartmäßig Python 3.5.#. Ich habe vor auf 3.9.0 upzugraden.
Warum updaten?
Mit PEP 0564 wurden die time.#_ns()-Funktionen, wie z.B. time.time_ns() eingeführt. Diese geben die Systemzeit in Nanosekunden aus und bieten eine deutlich höhere genauigkeit. time_ns() bietet z.B. eine 2,8-Fach höhere Genauigkeit ( https://www.python.org/dev/peps/pep-0564/#analysis). Ich habe vor, vier Analogwerte per Numerisch per Trapezformel aufzuintegrieren und da wäre das vermutlich schon ein ganz netter Vorteil. Die Aufnahme ist in Python 3.7 erfolgt.
Was habe ich gemacht?
Python 3.5 scheint die durch APT zur Verfügung gestellte Standard-Version zu sein. Deshalb habe ich dann den Weg genommen und selber einen Build durchgeführt (RevPi auf Arch wäre doch auch mal was, dann kann man sich das sparen...):
Wie erwartet: Python 3.9.0 wird verwendet und läuft aus dem Terminal heraus...
Das Problem:
RevPiPyLoad verwendet noch immer Python 3.5, obwohl "python" und "python3" Ihren Pfad auf 3.9.0 haben . So wie es scheint, wird explizit auf 3.5 zugegriffen. Wie bekomme ich RevPiPyLoad (wenn überhaupt) zu der Verwendung einer anderen Python3-Version überredet?
Ich bedanke mich schon einmal im Vorraus für die Anwort.
Beste Grüße
Jan
Hallo restliche Mitleser,
auf dem RevPi läuft standartmäßig Python 3.5.#. Ich habe vor auf 3.9.0 upzugraden.
Warum updaten?
Mit PEP 0564 wurden die time.#_ns()-Funktionen, wie z.B. time.time_ns() eingeführt. Diese geben die Systemzeit in Nanosekunden aus und bieten eine deutlich höhere genauigkeit. time_ns() bietet z.B. eine 2,8-Fach höhere Genauigkeit ( https://www.python.org/dev/peps/pep-0564/#analysis). Ich habe vor, vier Analogwerte per Numerisch per Trapezformel aufzuintegrieren und da wäre das vermutlich schon ein ganz netter Vorteil. Die Aufnahme ist in Python 3.7 erfolgt.
Was habe ich gemacht?
Python 3.5 scheint die durch APT zur Verfügung gestellte Standard-Version zu sein. Deshalb habe ich dann den Weg genommen und selber einen Build durchgeführt (RevPi auf Arch wäre doch auch mal was, dann kann man sich das sparen...):
Code: Select all
#Abhängigkeiten Installieren (Waren natürlich alle da...)
sudo apt install libffi-dev libbz2-dev liblzma-dev libsqlite3-dev libncurses5-dev libgdbm-dev zlib1g-dev libreadline-dev libssl-dev tk-dev build-essential libncursesw5-dev libc6-dev openssl git
#Python herunterladen und einen Build durchführen (In diesem Fall 3.9.0):
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz #Laden aus dem Internetz
tar xf Python-3.9.0.tar.xz #Entpacken...
cd Python-3.8.4 #Übernehmen der Weltherrschaft
./configure --enable-optimizations #Konfigurieren für System
make -j -l 4 #Build von Installationsdatei
sudo make altinstall #Installieren
#Setzen als Standard-Environment (ByeBye 2.7...)
echo "alias python3=python3.9" >> ~/.bashrc
echo "alias python=python3.9" >> ~/.bashrc
echo "alias pip3=pip3.9" >> ~/.bashrc
source ~/.bashrc
Das Problem:
RevPiPyLoad verwendet noch immer Python 3.5, obwohl "python" und "python3" Ihren Pfad auf 3.9.0 haben . So wie es scheint, wird explizit auf 3.5 zugegriffen. Wie bekomme ich RevPiPyLoad (wenn überhaupt) zu der Verwendung einer anderen Python3-Version überredet?
Ich bedanke mich schon einmal im Vorraus für die Anwort.
Beste Grüße
Jan