Forum: PC-Programmierung Python 3 Skript von Python 2 Skript aufrufen


von Felix L. (flex)


Lesenswert?

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?

von Daniel -. (root)


Lesenswert?

genauso wie man x-beliebiges anderes Programm startet?
schau dir mal subprocess modul an

von DPA (Gast)


Lesenswert?

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.

von Felix L. (flex)


Lesenswert?

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

von Karl (Gast)


Lesenswert?

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

von Felix L. (flex)


Lesenswert?

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.

von Karl (Gast)


Lesenswert?

Mein Fehler. Ich dachte "Robot Operating System" wäre das 
Betriebssystem.

von T.roll (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.