Seite 1 von 1

Python2 thread unter Python3

Verfasst: Montag 8. August 2016, 18:20
von EifelSoft
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.

Re: Python2 thread unter Python3

Verfasst: Montag 8. August 2016, 19:00
von Dav1d
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.

Re: Python2 thread unter Python3

Verfasst: Montag 8. August 2016, 19:01
von Sirius3
@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.

Re: Python2 thread unter Python3

Verfasst: Montag 8. August 2016, 19:38
von EifelSoft
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!

Re: Python2 thread unter Python3

Verfasst: Dienstag 9. August 2016, 16:54
von EifelSoft
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)

Re: Python2 thread unter Python3

Verfasst: Dienstag 9. August 2016, 17:05
von BlackJack
@EifelSoft: Du müsstest es für Python 3 installieren. (Falls es das für Python 3 gibt.)

Re: Python2 thread unter Python3

Verfasst: Dienstag 9. August 2016, 18:06
von EifelSoft
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

Re: Python2 thread unter Python3

Verfasst: Dienstag 9. August 2016, 19:36
von 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``.

Re: Python2 thread unter Python3

Verfasst: Mittwoch 10. August 2016, 10:33
von EifelSoft
@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.