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.
Python2 thread unter Python3
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.
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
@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.
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!
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!
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???
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
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)
@EifelSoft: Du müsstest es für Python 3 installieren. (Falls es das für Python 3 gibt.)
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
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
@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``.
@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.
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.