Python2 thread unter Python3

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
EifelSoft
User
Beiträge: 12
Registriert: Samstag 18. Juni 2016, 18:35

Hintergrund: Ich habe ein Messprogramm unter Python3 und möchte in dieses die Daten von einem AM2302 Sensor integrieren. Für diesen gibt es jedoch nur Treiber für Python2!? Wenn doch, dann hätte ich schon die Lösung. Die Programme laufen auf einem Paspi 3.

Lösungsidee: Ich starte unter Python3 einen thread in dem Python2 läuft und hole so die Daten rüber.

Frage: Ist dies grundsätzlich möglich? Wenn Ja, wie bringe ich den thread dazu in Python2 zu laufen? Wie komme ich an die Daten?

Bemerkung: Dies ist mein erster Beitrag. Sollte ich gegen irgendwelche geschriebenen oder ungeschrieben Regeln verstoßen haben, bitte ich um Information und Entschuldigung.

Vielen Dank für die Mühe, die sich die machen, die mir antworten.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Willkommen im Forum!

Du kannst keinen Thread mit einer anderen Python-Version starten, allerdings kannst du ein anderes Programm starten (was durchaus eine andere Python-Version sein kein).

[codebox=perl file=Unbenannt.pl]import subprocess

p = subprocess.Popen(['python2', 'foo.py'])
stdout, stderr = p.communicate()[/code]

Daten kannst du via stdin/stdout durchreichen, z.B. in einem JSON-Format.

Je nach Aufwand/Anwendungsfall kann man sich auch überlegen den Python 3 Code auf Python 2 zu portieren (ist wahrscheinlich einfacher/schneller als sich mit IPC rumzuschlagen), dafür gibt's z.B. 3to2.
the more they change the more they stay the same
Sirius3
User
Beiträge: 18227
Registriert: Sonntag 21. Oktober 2012, 17:20

@EifelSoft: wenn Du das Paket AM2302-rpi meinst, dann kannst Du das sowieso gleich wegwerfen. Da nimm doch leichter Adafruit_Python_DHT, dann hast Du schon Python3-Support.
EifelSoft
User
Beiträge: 12
Registriert: Samstag 18. Juni 2016, 18:35

Danke Dav1d und Sirius3!!!

zum Beitrag von Sirius3: Ich habe Adafruit.Python-DHT installiert, bekomme aber unter Python 3 Fehlermeldungen. Ich schaue mir die Sache noch einmal genau an und melde mich dann gegebenenfalls mit detailierter Info.

Grüße aus der Eifel!
EifelSoft
User
Beiträge: 12
Registriert: Samstag 18. Juni 2016, 18:35

Adafruit_DHT unter Python 3

Folgendes Programm läuft unter Python 2 problemlos.
Unter Python 3 bekomme ich die Fehlermeldung:
importerror no module named adafruit_dht
Alle Hinweise aus dem Netz haben mich nicht weitergebracht.
Was muss ich machen, das Adafruit_DHT unter Python 3 läuft oder geht das grundsätzlich nicht???

Code: Alles auswählen

#! /usr/bin/python

import Adafruit_DHT
import time

sensor = Adafruit_DHT.AM2302
pin = 27

while True:
    feuchte, temp = Adafruit_DHT.read(sensor, pin)

    if feuchte is not None and temp is not None:
        lt =  time.localtime()
        feuchte += 6  # Korrektur, Kallibrierung
        ZT= time.strftime("%H:%M:%S", time.localtime())
        print ZT, " -  %.1f °C" % temp ,"- %.0f" % feuchte, "%"  # für Python2
        # print (ZT, " -  %.1f °C" % temp ,"- %.0f" % feuchte, "%")  # für Python3   

    time.sleep(20)
BlackJack

@EifelSoft: Du müsstest es für Python 3 installieren. (Falls es das für Python 3 gibt.)
EifelSoft
User
Beiträge: 12
Registriert: Samstag 18. Juni 2016, 18:35

Danke für die Antwort.
Was ist der Unterschied bei der Installation für Python 2 zu 3?
Sorry, aber ich habe es einfach "so" installiert, wie überall im Netz beschrieben, Habe nirgendwo einen Hinweis in Erinnerung für eine bestimmte Python-Version.
Gruss aus der Eifel
BlackJack

@EifelSoft: Normalerweise installiert man das meiste heute mit `pip`. Und zwar mit dem `pip` das zu der Python-Installation gehört für die man installieren möchte. Am einfachsten stellt man das sicher in dem man den entsprechenden Python-Interpreter mit den Argumenten ``-m pip`` aufruft, gefolgt von den Argumenten für ``pip``. Also wenn der Python-Interpreter ``python3`` heisst, dann zum Beispiel ``python3 -m pip install some_package_name``.
EifelSoft
User
Beiträge: 12
Registriert: Samstag 18. Juni 2016, 18:35

@BlackJack: Danke für den Beitrag!!! Habe grundsätzlich etwas gelernt! Hat mich zur Lösung angeregt!

Für alle, die das gleiche Problem habe:
sudo python setup.py install
hat Adafruit nur unter Python 2 installiert.

Mit
sudo python3 setup.py install
läuft es jetzt auch unter Python 3

Danke auch noch mal an Sirius3!

Mein Problem ist gelöst. Ich verabschiede mich mit Grüßen an das Forum.
Antworten