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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Felix L. (flex)


Bewertung
0 lesenswert
nicht 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)


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

von DPA (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
Mein Fehler. Ich dachte "Robot Operating System" wäre das 
Betriebssystem.

von T.roll (Gast)


Bewertung
-1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.