Python Bibliotheken einbinden

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
XyBrot
Beiträge: 1
Registriert: 30 Jun 2020, 17:12

Python Bibliotheken einbinden

Beitrag von XyBrot » 30 Jun 2020, 18:26

Hallo zusammen,

wir haben uns die FT Lernfabrik 4.0 zugelegt und sind dabei die Programme der TXTs mit Python neu aufzuziehen.
Hierfür haben wir auf jedem TXT die CFW installiert. Nun benötigen wir allerdings noch weitere python Bibliotheken, die standartmäßig auf den TXTs noch nicht installiert sind (zb. Mqtt.paho).

Gibt es eine Möglichkeit, diese auf den TXTs noch nachträglich zu installieren?
Ich habe in einem anderen Forenbeitrag von 2017 gelesen, dass es möglich ist die CFW selbständig aufzusetzten und da dann die benötigten Bibliotheken einzubinden. Jedoch entzieht sich meinem Verständnis, wie ich dabei vorgehen muss, da ich noch recht neu in diesem Themengebiet bin.

Wäre nett, wenn mir jemand weiterhelfen könnte

Viele Grüße

DaGro
Beiträge: 18
Registriert: 09 Nov 2019, 17:05

Re: Python Bibliotheken einbinden

Beitrag von DaGro » 30 Jun 2020, 20:35

Hi, willkommen hier im Forum.
Beim TXT sollte das Python-Bibliotheken installieren relatiiv gleich, wie auf einem PC im Terminal funktionieren. Du kannst dich Über ssh mit dem TXT verbinden und dann sollte folgender Befehl eigentlich die Bibliothek installieren (vorausgesetzt, der TXT ist mit dem Wlan verbunden):

Code: Alles auswählen

pip3 install Mqtt
falls das nicht funktioniert kannst du auch

Code: Alles auswählen

pip install Mqtt
ausprobieren. Wenn das beides nicht geht kannst du dich ja noch einmal melden. Ein paar Tipps zum verbinden über SSH und python programmieren findest du auf dieser Website: cfw.ftcommunity.de
Falls du dabei irgendwelche Probleme hast, melde dich noch einmal, Ich konnte die Schritte grade nicht ausprobieren, aber eigentlich sollte das gehen :)
LG Daniel
PS: Ich habe das gerade bei meinem TXT selbst probiert, stelle aber fest, dass dieser weder pip noch pip3 findet. Auch

Code: Alles auswählen

sudo apt install python3-pip
funktioniert, nicht, da er weder apt noch apt-get als Befehl erkennt. Welchen Package-Manager nutzt die CFW denn?
Alle sagten: Das geht nicht. Dann kam einer der das nicht wusste und hat es einfach gemacht.

tintenfisch
Beiträge: 172
Registriert: 03 Jan 2018, 22:04

Re: Python Bibliotheken einbinden

Beitrag von tintenfisch » 02 Jul 2020, 09:33

Hallo Daniel,
DaGro hat geschrieben:
30 Jun 2020, 20:35
PS: Ich habe das gerade bei meinem TXT selbst probiert, stelle aber fest, dass dieser weder pip noch pip3 findet. Auch

Code: Alles auswählen

sudo apt install python3-pip
funktioniert, nicht, da er weder apt noch apt-get als Befehl erkennt. Welchen Package-Manager nutzt die CFW denn?
Die cfw nutzt buildroot um die Distribution zu erstellen. Dort müssen alle Pakete, die zur Verfügung stehen sollen, im voraus bekannt sein, eine nachträgliche Installation ist nicht möglich.

Der TX-Pi https://tx-pi.de/, der auf dem Raspberry Pi mit Raspbian setzt, unterstützt hingegen nachträgliche Änderungen am System. D.h. es können neben beliebigen Debian-Paketen auch Python-Pakete installiert werden; der Anwender nutzt ein normales Raspbian auf dem die cfw läuft.

Aber dies nützt dem Fragesteller natürlich nix, wenn er die bestehenden TXTs aufrüsten möchte; ich versuche in einem weiteren Beitrag das Vorgehen zu beschreiben.

Viele Grüße
Lars

tintenfisch
Beiträge: 172
Registriert: 03 Jan 2018, 22:04

Re: Python Bibliotheken einbinden

Beitrag von tintenfisch » 02 Jul 2020, 13:08

XyBrot hat geschrieben:
30 Jun 2020, 18:26
[...]
Nun benötigen wir allerdings noch weitere python Bibliotheken, die standartmäßig auf den TXTs noch nicht installiert sind (zb. Mqtt.paho).

Gibt es eine Möglichkeit, diese auf den TXTs noch nachträglich zu installieren?
Leider nicht, die Packages müssen beim Erstellen des Images bekannt sein und können nachträglich nicht installiert werden.

XyBrot hat geschrieben:
30 Jun 2020, 18:26
Ich habe in einem anderen Forenbeitrag von 2017 gelesen, dass es möglich ist die CFW selbständig aufzusetzten und da dann die benötigten Bibliotheken einzubinden. Jedoch entzieht sich meinem Verständnis, wie ich dabei vorgehen muss, da ich noch recht neu in diesem Themengebiet bin.
Ich hatte gehofft, dass einer der Core cfw-Entwickler darauf einsteigt, aber ich versuche es mal und beschreibe das grundsätzliche Vorgehen:

1. Du erstellst einen Clone der cfw

Code: Alles auswählen

git clone https://github.com/ftCommunity/ftcommunity-TXT.git
2. Einen Build starten. Ich weiß nicht, ob das zu diesem Zeitpunkt notwendig ist, aber halte ich für sinnvoll, da dann auch buildroot und alle weiteren benötigten Quellen geruntergeladen werden. Zudem kann man dann erkennen, ob der Build überhaupt funktioniert.

Code: Alles auswählen

cd ftcommunity-TXT
make
3. Kaffeetrinken gehen, mit dem Hund raus, Wohnung aufräumen oder mal wieder die Eltern anrufen, das dauert nämlich etwas
4. Du suchst Dir unter https://pypi.org das zu installierende Package heraus und dann die Download URL.
Im Falle von https://pypi.org/project/paho-mqtt/ wäre dies https://files.pythonhosted.org/packages ... 5.0.tar.gz
Ferner kopierst Du Dir einen der Hashwerte, die dort angegeben sind, bspw. den sha256
5. Erstelle ein Verzeichnis in packages, bspw. "python-pahomqtt"
6. Kopiere eine Vorlage bspw. "Config.in" und "python-semantik-versions.mk", die Du in python-semantic-version findest, in das vorgenannte Verzeichnis.
Benenne "python-semantik-versions.mk" in "python-paho-mqtt.mk" um.
7. Öffne Config.in und ersetze "BR2_PACKAGE_PYTHON_SEMANTIC_VERSION" bspw. durch "BR2_PACKAGE_PYTHON_PAHOMQTT", den Wert bei "bool" ersetzt Du bspw. durch "python-pahomqtt"
8. Schreibe den zuvor kopierten Hash in eine Datei

Code: Alles auswählen

echo "sha256 e3d286198baaea195c8b3bc221941d25a3ab0e1507fc1779bdb7473806394be4 paho-mqtt-1.5.0.tar.gz" > ./package/python-pahomqtt/python-paho-mqtt.hash
9. Ersetze in der python-paho-mqtt.mk den String "SEMANTIC_VERSION" durch "PAHOMQTT" und kopiere die PyPI URL in PYTHON_PAHOMQTT_SITE

Code: Alles auswählen

################################################################################
#
# python-paho-mqtt
#
################################################################################

PYTHON_PAHOMQTT_VERSION = 1.5.0
PYTHON_PAHOMQTT_SOURCE = paho-mqtt-$(PYTHON_PAHOMQTT_VERSION).tar.gz
PYTHON_PAHOMQTT_SITE = https://files.pythonhosted.org/packages/59/11/1dd5c70f0f27a88a3a05772cd95f6087ac479fac66d9c7752ee5e16ddbbc
PYTHON_PAHOMQTT_SETUP_TYPE = setuptools
PYTHON_PAHOMQTT_LICENSE = EPL
$(eval $(python-package))
10. Gehe zurück in in das ftcommunity-TXT-Verzeichnis und füge

Code: Alles auswählen

source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-pahomqtt/Config.in"
zur "Config.in" hinzu, die Du in dem Verzeichnis findest.

Dann führst Du nochmal ein make aus. Nun solltest Du gefragt werden, ob Du das eben erstellte Package hinzufügen möchtest, das mit "y" bejahen und dann sollte das Image mit dem zusätzlichen Python-Package erstellt werden.

Viel Erfolg,
Lars

Benutzeravatar
MasterOfGizmo
Beiträge: 1824
Registriert: 30 Nov 2014, 07:44

Re: Python Bibliotheken einbinden

Beitrag von MasterOfGizmo » 02 Jul 2020, 14:58

Vielen Dank für die Antwort. In der Tat habe ich das auch alles mal gewusst und verwendet, aber das ist so lange her, dass ich es weitgehend vergessen habe.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: Python Bibliotheken einbinden

Beitrag von Torsten » 02 Jul 2020, 18:47

Hallo,
XyBrot hat geschrieben:
30 Jun 2020, 18:26
wir haben uns die FT Lernfabrik 4.0 zugelegt und sind dabei die Programme der TXTs mit Python neu aufzuziehen.
Hierfür haben wir auf jedem TXT die CFW installiert. Nun benötigen wir allerdings noch weitere python Bibliotheken, die standartmäßig auf den TXTs noch nicht installiert sind (zb. Mqtt.paho).
[eine kleine Anmerkung: da die original fischertechnik Firmware (ab Version 4.6.6) alle notwendigen Bibliotheken (inklusive Python und ftrobopy) schon mitbringt, könntet Ihr die Lernfabrik auch damit auf Python umstellen.]

Egal, ob ihr die cfw oder die original Firmware verwendet habe ich hier ein paar Tips/Infos für Euch:

1. In der Lernfabrik wird von der Master-Slave-Funktion gebrauch gemacht, bei der ein TXT als Extension an einem anderen TXT (Master) hängt. ftrobopy hat den Extension-Support erst seit der Version 1.92 eingebaut und befindet sich noch im Beta-Stadium, weil er noch nicht ausgiebig getestet wurde.

2. Der Extension-Support von ftrobopy ist bisher nur im Socket-Modus (nicht im 'direct'-Modus) implementiert und ist recht langsam, da der dafür notwendige Kompressionsalgorhythmus in Python implementiert ist.

3. Seit der ftrobopy-Version 1.94 wird der sog. TransferArea-Mode (TA) von fischertechnik unterstützt, der deutlich schneller ist als der Socket-Modus, da hierbei die (in C/C++ geschriebene) fischertechnik-Bibliothek verwendet wird. Im TA-Modus wird auch die Extension unterstützt. Aber: sowohl der TA-Modus als auch der Extension-Modus von ftrobopy sind noch nicht vollständig. (Anmerkung: der TA-Modus ist der native Offline-Modus des TXT, bzw. von ROBOPro)

4. Die Verwendung des TA-Modus von ftrobopy unter der cfw setzt auf jeden Fall voraus, dass die FT-GUI vorher gestartet wurde. Ich habe diesen Fall jedoch nie ausprobiert und kann nicht garantieren, dass das funktioniert. Insbesondere gibt es derzeit noch Probleme mit der FT-GUI unter der cfw, wenn auf dem TXT die original FW 4.6.6 installiert ist (fischertechnik hat hier einige Pfade geändert).

5. Um unabhängig von der Master/Slave Funktion zu sein, könntet Ihr auch alle 6 TXTs der Lernfabrik einzeln in ein WLAN hängen und über die Sockets ansprechen (entweder von einem der TXTs oder von einem PC, der im gleichen Netz häng).

Die Umstellung der Lernfabrik auf Python ist ein anspruchsvolles und spannendes Projekt und ich hoffe, Ihr haltet uns hier auf dem Laufenden über Eure Fortschritte ... und Fragen könnt ihr hier natürlich auch stellen :-)

Viele Grüße
Torsten

Antworten