Wie kann ich cross-compilierte Module mit ausliefern und die ohne installation nutzen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Michael65589
User
Beiträge: 3
Registriert: Freitag 23. Oktober 2020, 05:23

Hallo,
ich möchte Python auf einem embedded System nutzen. Dort ist zwar Python 3 installiert, allerdings nicht alle benötigten Module und ich habe auch keine Berechtigung diese nachträglich zu installieren. Mein Ziel ist es nun die Module, die ich benötige, meiner Applikation mit zu geben um sie so auf dem Zielsystem nutzen zu können. Welche Möglichkeiten habe ich?
Viele Module kann ich als tar.gz oder whl runterladen, aber wie nutze ich sie dann?
Michael65589
User
Beiträge: 3
Registriert: Freitag 23. Oktober 2020, 05:23

Aktuell habe ich mir so beholfen, das ich mir das tar.gz des Moduls runter geladen habe und es in meinem Applikationsordner entpackt habe. Danach setzte ich den sys.path und kann dann das Modul implementieren.

Beispiel:

import sys

cantools_path=("./cantools-35.3.0/")
can_path=('./python-can-3.3.4/')
aenum_path=('./aenum-2.2.4/')
bitstruct_path=('./bitstruct-8.11.0/')
textparser_path=('./textparser-0.23.0/')
diskcache_path=('./diskcache-5.0.3/')
sys.path.append(cantools_path)
sys.path.append(can_path)
sys.path.append(aenum_path)
sys.path.append(bitstruct_path)
sys.path.append(textparser_path)
sys.path.append(diskcache_path)

import cantools

print("Test")
print (cantools.__version__)


Gibt es eine andere (bessere) Möglichkeit?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Kannst du beliebige Shell Kommandos laufen lassen? Dann kannst du ggf ein virtualenv anlegen. Das ist eine kosmetische Verbesserung, aber ultimativ musst du dem Interpreter die in den pfad hieven.
Michael65589
User
Beiträge: 3
Registriert: Freitag 23. Oktober 2020, 05:23

Kann man evtl. mit zipimport arbeiten? Also alle Module in eine ZIP packen und somit nur eine ZIP-Datei mit allen Modulen zur Applikation mitgeben?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe da lange nicht mehr reingeschaut, aber mE entpackt zip import in ein temporäres Verzeichnis. Wirklich was gewonnen ist also nicht. Natürlich kann man sich damit das deployment leichter machen. Aber das geht ja auch so, indem du ein Archiv lokal entpackst.
Antworten