Python 3 Skript von Python 2 Skript aufrufen

OP #6247018
Hallo zusammen,

ich arbeite gerade an einem Projekt in dem das Robot Operating System 
(ROS Melodic) eingesetzt wird. ROS unterstützt in der aktuellen Version 
zur Zeit nur Python 2.
Nun möchte ich einen Sensor auslesen, allerdings kann die für diesen 
Sensor benötigte Bibliothek nur unter Python 3 verwendet werden.
Um dieses Problem zu lösen, möchte ich den Hauptskript (von ROS 
ausführbar) in Python 2 schreiben, dieser übergibt Argumente an den 
Python 3 Skript in dem die Sensordaten erfasst werden und ausgewertet 
werden. Diese Daten möchte ich dann wieder zurück an den Hauptskript 
übermitteln.
Mir ist bewusst, dass diese Variante nicht besonders effektiv ist, 
allerdings bleibt mir aktuell nichts anderes übrig. Kann mir jemand 
sagen wie ich dieses Vorhaben am besten umsetzen kann?
Gast
Python 2 ist tot: https://www.python.org/doc/sunset-python-2/

Bei ROS scheint wohl in einem Repo für Debian und Ubuntu zu geben, wobei 
Ubuntu die Hauptplatform ist?

In Debian wird Python 2 entfernt: 
https://lists.debian.org/debian-devel-announce/2019/11/msg00000.html
Das betrifft dann auch Ubuntu: 
https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-20.04-Continue-Py2-Drop
(Im Focal Fossa Release haben die das wohl aber noch nicht vollständig 
geschafft: 
https://packages.ubuntu.com/search?suite=all&searchon=names&keywords=python2)

ROS wird zwar wohl noch ein paar Jährchen haben, bis ihr verwendetes 
Ubuntu Release EOL sein wird, aber bis spätestens 2030 / 2032 werden sie 
wohl oder übel umstellen müssen. Falls möglich, also einfach noch eine 
weile Abwarten.
OP
Die aktuelle LTS ROS Version ist hoffentlich auch die letzte mit Python 
2, denn die neue LTS Version, die diesen Monat auch erscheinen soll 
unterstützt Python 3.
Da ich im aktuellen Projekt aber noch die "alte" Version verwende muss 
ich damit klar kommen.
Vielen Dank für den Tipp zu subprocess, das schaue ich mir mal an.

Viele Grüße
Felix
Gast
Felix L. schrieb:
> dieser übergibt Argumente an den
> Python 3 Skript in dem die Sensordaten erfasst werden und ausgewertet
> werden.

Und wie führt Robot Operating System das Python 3 Skript aus?

>  ROS unterstützt in der aktuellen Version zur Zeit nur Python 2
OP
Karl schrieb:
> Felix L. schrieb:
>> dieser übergibt Argumente an den
>> Python 3 Skript in dem die Sensordaten erfasst werden und ausgewertet
>> werden.
>
> Und wie führt Robot Operating System das Python 3 Skript aus?
>
>>  ROS unterstützt in der aktuellen Version zur Zeit nur Python 2

Wenn es so funktioniert wie ich es mir vorstelle, dann gar nicht. Das 
ROS führt den Python 2 Skript aus, dieser den Python 3, welcher vom 
darüberliegende Linux ausgeführt wird. Die ermittelten Daten gehen dann 
zurück an de Python 2 Skript und können vom ROS weiterverarbeitet 
werden. So die Theorie, ich werde dies auf jeden Fall testen.
Gast
Felix L. schrieb:
> denn die neue LTS Version, die diesen Monat auch erscheinen soll
> unterstützt Python 3.
> Da ich im aktuellen Projekt aber noch die "alte" Version verwende muss
> ich damit klar kommen.

Hier würde ich ganz klar sagen: Umstellen! Bevor du dich jetzt noch 
sinnlos mit Py2 vs. Py3 rumärgerst, lieber einmal etwas Zeit investieren 
und das komplett auf Python3 umstellen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.