Seite 1 von 1

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

Verfasst: Freitag 23. Oktober 2020, 05:41
von Michael65589
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?

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

Verfasst: Freitag 23. Oktober 2020, 07:30
von Michael65589
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?

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

Verfasst: Freitag 23. Oktober 2020, 07:37
von __deets__
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.

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

Verfasst: Freitag 23. Oktober 2020, 09:33
von Michael65589
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?

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

Verfasst: Freitag 23. Oktober 2020, 10:10
von __deets__
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.