Python 3 auf Raspberry Prog-Struktur ändern

  • Hallo zusammen,

    Ich habe ein Python Programm auf meinem Raspberry laufen bei dem ich mit print Ausgaben auf der Konsole kontrolliere. Nach einem Update auf dem Raspberry gibt es diese Ausgaben nicht mehr. Ich brauche diese aber. Wie kann ich diese wieder aktivieren? Auch Fehler werden auf der Konsole nicht mehr angezeigt....

    Danke :conf:

    Gruß pro2311:)

    • Offizieller Beitrag

    Hallo pro2311,

    willkommen im Forum!

    Würde ich schreiben: "Ich habe ein Spielzeug und nachdem ich eine neue Batterie eingelegt hatte, funktionierte das nicht mehr. Was kann ich dagegen machen?". Wüsstest Du was das für ein Spielzeug ist, welche Batterie da reingehört usw.? Gut, das ist ein blöder Vergleich... :lol:

    BTW: Es fehlen einfach die ganzen Infos. Lies mal hier Wie Frage ich nach Hilfe? und ergänze bitte! ;)

  • Hallo,

    also abgesehen von der doch sehr vagen Fragestellung sage ich pauschal schon mal: kann nicht sein.

    Entweder läuft das Programm und die bekommst die Ausgabe nach stdout. Oder das Programm läuft nicht und du bekommst eine Fehlermeldung.

    Dass das Prog läuft aber `print` ignoriert wird, "nur" weil du ein Update gemacht hast, kann nicht sein.

    Nachtrag: Da Python 2.7. in < 1 Jahre EOL ist, wäre so oder so JETZT eine gute Gelegenheit, dass Programm nach Python 3 zu portieren.

    Gruß, noisefloor

  • Hallo zusammen,

    sorry kann ich mich nur entschuldigen dass ich so hier eingestiegen bin...

    Also ich bin noch nicht so lange dabei aber ich habe auf meinem Raspberry PI V3 das Betriebssystem Raspbian. Unter diesem habe ich verschiedene Entwicklungsumgebungen. Ich habe mich für Python 2.7 und der GUI TKinter entschieden weil ich hier die Möglichkeit habe mit einer mysql DB zu kommunizieren. Ich hatte gelesen dass es mit Python 3 nicht so einfach geht??

    Zur Kontrolle der Daten und Ergebnisse hatte ich an einigen Stellen eine print Anweisung eingefügt, die über eine gewisse Zeit geklappt hat. Selbst Fehler im Quellcode wurden mir in der Konsole angezeigt. Genau das vermisse ich seit einem Update.

    Gruß pro2311

    Gruß pro2311:)

    • Offizieller Beitrag

    sorry kann ich mich nur entschuldigen dass ich so hier eingestiegen bin

    Alles gut! ;)

    Ich hatte gelesen dass es mit Python 3 nicht so einfach geht??

    Das Internet ist nicht besonders zuverlässig/wissend mit seinen Aussagen. Da wird viel kopiert und damit auch der Müll vererbt. Wir haben hier öfter mal mit dem Unsinn zu tun der im Netz verbreitet wird.

    BTW. Bitte zeig mal Dein Script und in einem Codeblock (</>)

  • Na dann fangen wir mal an. Eine Bitte habe ich aber noch die Struktur meiner Anwendung entspricht nicht unbedingt der wie es sein sollte....

    Hier mal mein Import:

    # -*- coding: utf-8 -*-

    # To change this license header, choose License Headers in Project Properties.

    # To change this template file, choose Tools | Templates

    # and open the template in the editor.

    import ttk

    import Tkinter

    from Tkinter import StringVar

    import tkMessageBox

    from mysql.connector import (connection)

    from mysql.connector import (cursor)

    import getpass

    import sys

    from ttk import Treeview, Style

    from idlelib.ToolTip import *

    import datetime

    import time

    import tkFont

    import RPi.GPIO as GPIO

    import MFRC522

    import signal

    import serial

    from tkcalendar import Calendar, DateEntry

    reload(sys)

    sys.setdefaultencoding('utf8')

    continue_reading = True

    APP_XPOS = 100

    APP_YPOS = 100

    APP_WIDTH = 750

    APP_HEIGHT = 500

    ########################################

    Hier noch ein Teil Main Prog....

    ########################################

    firstclick = True

    root = Tkinter.Tk()

    root.title("Flugbuch Aero Club Wolfsburg")

    root.geometry("900x950+50+50")

    # Zentrierung und Groesse des Fensters

    root.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))

    root.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))

    # Fenster nicht schliessen lassen !!!

    root.protocol("WM_DELETE_WINDOW",0)

    # Fenster nicht minimieren lassen

    #root.attributes("-toolwindow", 1)

    # bei Wert 5000 bleibt das Fenster 5 Sekunden offen

    #root.after(5000, sys.exit)

    # Frame aufschalten mit relief

    mainFrame = Tkinter.Frame(root)

    mainFrame['borderwidth'] = 5

    mainFrame['relief'] = 'sunken'

    mainFrame.grid()

    # Menue einstellen

    menubar = Tkinter.Menu(root)

    filemenu = Tkinter.Menu(menubar)

    filemenu.add_command(label="New", command=Kalender)

    #filemenu.add_command(label="Open")

    #filemenu.add_command(label="Save")

    #filemenu.add_command(label="Save as...")

    filemenu.add_command(label="Close", command=change_schliessen)

    menubar.add_cascade(label="File", menu=filemenu)

    editmenu = Tkinter.Menu(menubar, tearoff=0)

    editmenu.add_command(label="Undo", command=donothing)

    editmenu.add_separator()

    #editmenu.add_command(label="Cut", command=donothing)

    editmenu.add_command(label="Copy", command=donothing)

    editmenu.add_command(label="Paste", command=donothing)

    #editmenu.add_command(label="Delete", command=donothing)

    #editmenu.add_command(label="Select All", command=donothing)

    adminmenu = Tkinter.Menu(menubar, tearoff=0)

    adminmenu = Tkinter.Menu(menubar)

    adminmenu.add_command(label="Neues Mitglied", command=change_neuesFenster)

    adminmenu.add_command(label="Flag Vorstand", command=donothing)

    adminmenu.add_command(label="RFID Chip schreiben", command=change_RFID_schreiben)

    adminmenu.add_command(label="Termine BauStd", command=change_TermineBauStd)

    adminmenu.add_separator()

    adminmenu.add_command(label="Auswertung", command=seeAuswertung)

    adminmenu.add_command(label="Ranking", command=change_Ranking)

    menubar.add_cascade(label="Admin", menu=adminmenu)

    menubar.add_cascade(label="Edit", menu=editmenu)

    helpmenu = Tkinter.Menu(menubar, tearoff=0)

    helpmenu.add_command(label="Help Index", command=donothing)

    helpmenu.add_command(label="About...", command=change_help)

    menubar.add_cascade(label="Help", menu=helpmenu)

    FlugDaten_button = Tkinter.Button(mainFrame,text="Flugdaten ", command=change_flugdaten, bg='#55cc11')

    FlugDaten_button.grid(row=1, column=1, padx='5', pady='15',sticky='w')

    FlugTip = ListboxToolTip(FlugDaten_button, ["Hier werden alle","Flugdaten erfasst !!"])

    Baustunden_button = Tkinter.Button(mainFrame, text="Baustunden", command=change_baustunden, bg='#FBD975')

    Baustunden_button.grid(row=1, column=2, padx='5', pady='15', sticky='w')

    BauTip = ListboxToolTip(Baustunden_button, ["Hier werden alle","Baustunden erfasst !!","Achtung ist nur am Tag " , "der angesetzten" , "Baustunden aktiv!!"])

    Flugleiter_button = Tkinter.Button(mainFrame, text="Flugleiter", command=change_flugleiter, bg='#FFFF11')

    Flugleiter_button.grid(row=1, column=3, padx='5', pady='15', sticky='w')

    FlugTip = ListboxToolTip(Flugleiter_button, ["Hier werden alle","Flugleiter Bemerkungen","erfasst !!"])

    Check_VerbrennerVar1=Tkinter.IntVar()

    Verbrenner_button = Tkinter.Checkbutton(mainFrame, text="Verbrenner",variable=Check_VerbrennerVar1, command =change_verbrenner)

    Verbrenner_button.grid(row=2, column=1, padx='5', pady='15',sticky='w')

    Check_ElektroVar1=Tkinter.IntVar()

    Elektro_button = Tkinter.Checkbutton(mainFrame, text="Elektro",variable=Check_ElektroVar1, command = change_elektro)

    Elektro_button.grid(row=2, column=2, padx='5', pady='15',sticky='w')

    Check_FPVVar1=Tkinter.IntVar()

    FPV_button = Tkinter.Checkbutton(mainFrame, text="FPV", variable=Check_FPVVar1)

    FPV_button.grid(row=2, column=3, padx='5', pady='15',sticky='w')

    FPV_button['state'] = Tkinter.DISABLED

    Verbrenner_button['state'] = Tkinter.DISABLED

    Elektro_button['state'] = Tkinter.DISABLED

    Check_FlaecheVar1=Tkinter.IntVar()

    Flaeche_chk = Tkinter.Checkbutton(mainFrame, text="Flaeche", variable=Check_FlaecheVar1,command = change_flaeche)

    Flaeche_chk.grid(row=3, column=1, padx='5', pady='15',sticky='w')

    Check_HeliVar1=Tkinter.IntVar()

    Heli_chk = Tkinter.Checkbutton(mainFrame, text="Heli", variable=Check_HeliVar1, command =change_heli )

    Heli_chk.grid(row=3, column=2, padx='5', pady='15',sticky='w')

    Flaeche_chk['state'] = Tkinter.DISABLED

    Heli_chk['state'] = Tkinter.DISABLED

    add_button = Tkinter.Button(mainFrame, text="plus", command=add)

    add_button.grid(row=4, column=1, padx='5', pady='15',sticky='w')

    addTip = ListboxToolTip(add_button, ["Anzahl wird hoeher"," !!"])

    subtract_button = Tkinter.Button(mainFrame, text="minus",command=substract)

    subtract_button.grid(row=4, column=2, padx='5', pady='15',sticky='w')

    subTip = ListboxToolTip(subtract_button, ["Anzahl wird niedriger"," !!"])

    reset_button = Tkinter.Button(mainFrame, text="Reset",command=reset)

    reset_button.grid(row=5, column=3, padx='5', pady='15',sticky='w')

    resetTip = ListboxToolTip(reset_button, ["ACHTUNG !!","Alles wird geloescht!!"])

    add_button['state'] = Tkinter.DISABLED

    subtract_button['state'] = Tkinter.DISABLED

    reset_button['state'] = Tkinter.DISABLED

    Anzahl_label = Tkinter.Label(mainFrame,text="Anzahl : ")

    #Anzahl_label.grid(row=5, column=1)

    Anzahl_label.place(x= 15, y=210)

    AnzahlTip = ListboxToolTip(Anzahl_label, ["Gesamt-Anzahl der","Fluege"])

    # Kontrollvariable

    variable = StringVar()

    text = StringVar()

    text.set('0')

    total_label = Tkinter.Label(mainFrame, bg='white', textvariable=text)

    total_label.grid(row=5, column=2)

    Anzahl_label['state'] = Tkinter.DISABLED

    subtract_button['state'] = Tkinter.DISABLED

    eingabe = Tkinter.Entry(root,width=20, background='#ffff00')

    eingabe.insert('end','Name')

    #eingabe.config(state='readonly')

    eingabe.grid(row=1, column=0)

    AnfZeitlbl = Tkinter.Label(mainFrame, bg='orange', text="A Zeit : ")

    AnfZeitlbl.grid(row=8, column=1, pady=5, padx=15)

    AnfZeitlbltxt = Tkinter.Label(mainFrame, bg='red', text=" ")

    AnfZeitlbltxt.grid(row=10, column=1, pady=5, padx=15)

    AnfZeitlbltxtTip = ListboxToolTip(AnfZeitlbltxt, ["Anfangszeit auf dem","Flugplatz"])

    EndZeitlbl = Tkinter.Label(mainFrame, bg='orange', text="E Zeit : ")

    EndZeitlbl.grid(row=8, column=2, pady=5, padx=15)

    EndZeitlbltxt = Tkinter.Label(mainFrame, bg='red', text=" ")

    EndZeitlbltxt.grid(row=10, column=2, pady=5, padx=15)

    EndZeitlbltxtTip = ListboxToolTip(EndZeitlbltxt, ["Endzeit auf dem","Flugplatz"])

    #****************

    car_list = [

    ('Hyundai', 'brakes') ,

    ('Honda', 'light') ,

    ('Lexus', 'battery') ,

    ('Benz', 'wiper') ,

    ('Ford', 'tire') ,

    ('Chevy', 'air') ,

    ('Chrysler', 'piston') ,

    ('Toyota', 'brake pedal') ,

    ('BMW', 'seat')]

    aero_header = ['Name ', 'Vorname ', 'Info ']

    tree = ttk.Treeview(root, height = 16, columns=aero_header, show="headings",selectmode = "extended")

    vsb = ttk.Scrollbar(root, orient="vertical", command=tree.yview)

    tree.configure(yscrollcommand=vsb.set)

    vsb.place(x=30+640+2, y=5, height=310+20)

    hsb = Tkinter.Scrollbar(orient="horizontal",command=tree.xview)

    tree.configure(yscrollcommand=vsb.set,xscrollcommand=hsb.set)

    ttk.Style().configure("Treeview", background="grey", foreground="white", fieldbackground="grey")

    tree.grid(column=2, row=0, padx=15, in_=root)

    tree.bind('<ButtonRelease-1>', selectItem)

    hsb.grid(column=2, row=1, ipadx='60')

    #tree.column("Name ",minwidth=100,width=300, stretch=NO)

    for col in aero_header:

    tree.heading(col, text=col.title(),

    command=lambda c=col: sortby(tree, c, 0))

    # adjust the column's width to the header string

    tree.column(col,width=tkFont.Font().measure(col.title()))


    cnx = connection.MySQLConnection(user='aero', password='reinchri',host='127.0.0.1',database='AEROCLUBERFASSUNG')

    cursor = cnx.cursor()

    cursor.execute("SELECT str_Nachname, str_Vorname FROM AEROCLUBERFASSUNG.T_Mitglieder")

    cpt = 0 # Counter representing the ID of your code.

    for row in cursor:

    # I suppose the first column of your table is ID

    tree.insert('', 'end', text=str(cpt), values=(str(row[0]), str(row[1])))

    cpt += 1 # increment the ID


    cnx.close

    now = datetime.datetime.now()

    print str(now)

    print("Aktueller User : " + getpass.getuser())

    v = StringVar()

    options = ["8:00", "8:15", "8:30", "8:45", "9:00","9:00", "9:15", "9:30",

    "9:45", "10:00", "10:15", "10:30", "10:45",

    "11:00", "11:15", "11:30", "11:45", "12:00",

    "12:15", "12:30", "12:45", "13:00",

    "13:15", "13:30", "13:45", "14:00",

    "14:15", "14:30", "14:45", "15:00",

    "15:15", "15:30", "15:45", "16:00",

    "16:15", "16:30", "16:45", "17:00",

    "17:15", "17:30", "17:45", "18:00",

    "18:15", "18:30", "18:45", "19:00",

    "19:15", "19:30", "19:45", "20:00",

    "20:15", "20:30", "20:45", "21:00",

    "21:15", "21:30", "21:45", "22:00"]

    box = ttk.Combobox(root, width=8, height=10, textvariable=v, values=options)

    box.current(0)

    box.grid(column=0, row=3)

    box.bind('<<ComboboxSelected>>',StdAuswahl)

    update(box, options)

    box['state'] = Tkinter.DISABLED


    v2 = StringVar()

    options = ["1", "2", "3", "4", "5","6", "7", "8",

    "9", "10", "11", "12", "13",

    "14", "15", "16", "17", "18",

    "19", "20", "21", "22",

    "23", "24", "25", "26",

    "27", "28", "29", "30",

    "31", "32", "33", "34",

    "35", "36", "37", "38",

    "39", "40", "41", "42",

    "43", "44", "45", "46",

    "47", "48", "49", "50"]

    boxAnz = ttk.Combobox(mainFrame, width=4, height=10, textvariable=v2, values=options)

    boxAnz.current(0)

    boxAnz.grid(column=1, row=5)

    boxAnz.bind('<<ComboboxSelected>>',AnzAuswahl)

    update2(boxAnz, options)

    boxAnz['state'] = Tkinter.DISABLED


    Zeitlbl = Tkinter.Label(root, bg='orange', text="Manuelle Anfangszeit : ")

    Zeitlbl.grid(row=8, column=0)

    speicher_button = Tkinter.Button(root, bg='red', text="Speichern ",command=change_speichern)

    speicher_button.grid(row=2, column=1, sticky='w')#padx='5', pady='15',

    speicher_button['state'] = Tkinter.DISABLED

    photo = PhotoImage(file = 'disk-icon.png')

    speicher_button.config(image = photo , compound = LEFT )

    RFID_button = Tkinter.Button(root, bg='red', text="RFID lesen",command=change_RFIDlesen)

    RFID_button.grid(row=1, column=1, sticky='w')#padx='35', pady='15',

    FlugDaten_button['state'] = Tkinter.DISABLED

    Baustunden_button['state'] = Tkinter.DISABLED

    Flugleiter_button['state'] = Tkinter.DISABLED


    root.config(menu=menubar)

    tip = ListboxToolTip(speicher_button, ["Alles speichern...."])


    root.mainloop()

    Gruß pro2311:)

    Einmal editiert, zuletzt von pro2311 (1. Februar 2019 um 22:29)

  • Vielleicht noch zur Erklärung dass ist / soll eine Flugzeiterfassung über RFID sein, die dann die Daten in mysql schreibt und diese dann auswertbar macht. Die Erfassung klappt soweit...

    Gruß pro2311:)

  • Hallo,

    Zitat

    Eine Bitte habe ich aber noch die Struktur meiner Anwendung entspricht nicht unbedingt der wie es sein sollte....

    Allerdings. Du brauchst dringend einen Klassen-basierten Ansatz für die GUi. Sonst wird das nichts. Die Struktur des Codes ist... furchtbar. Leg' den Code mal 6 Monate weg und schau dann noch mal drauf. ich wette, du verstehst dann selber nichts mehr...

    Und _was_ funktioniert genau nicht? Alle `print` nicht, der Rest schon? Was passiert, wenn du das Programm laufen lässt? Bist du sicher, dass das Programm überhaupt bis zu der Zeile kommt, wo ein `print` steht?

    Hast du mal testweise ein `print` ganz am Anfang eingebaut?

    Außerdem hast du im 1. Post was von einem "Update" gesagt - was hast du wie upgedated? Bitte _genau_ beschreiben und eine Angabe zu deinem OS machen.

    BTW: hast du das selber geschrieben oder aus div. Quellen zusammen kopiert?

    Gruß, noisefloor

    P.S.: und den Code nächstes Mal bitte in eine Codebox setzen.

  • P.S.: und den Code nächstes Mal bitte in eine Codebox setzen.

    nicht nur bitte das nächste mal - sondern bitte auch den oberen Editieren.

    EDIT:
    Konvertier mal gleich das Skript zu Python3 mit 2to3

    Das läuft sicher unter Python3 (was ja die eigentliche Frage ist, das keine Ausgabe mehr erscheint - schauen wir im Anschluss)

  • Hallo Hofei,

    ich habe mal die Konvertierung mit 2to3 gestartet und sehr viele Infos auf der Konsole bekommen.

    Ich würde sagen die Konvertierung ist soweit ohne Fehler gelaufen. Was er aber bei Start des Programmes sagt:

    Traceback (most recent call last):

    File "/home/pi/src/AeroCluberfassung.py", line 11, in <module>

    from mysql.connector import (connection)

    ImportError: No module named 'mysql'

    Ist hier eine andere Installation erforderlich oder wie bekomme ich raus wo das Problem liegt?

    In der nächsten Import Zeile kommt sicher das nächste Problem...

    Gruß pro2311:)

  • Die Installation bin ich komplett durchlaufen und habe immer noch diese Meldung:

    Python
    Traceback (most recent call last):
      File "/home/pi/src/AeroCluberfassung.py", line 11, in <module>
        from mysql.connector import (connection)
    ImportError: No module named 'mysql'

    Wo kann ich jetzt ansetzen??

    Danke :conf:

    Gruß pro2311:)

  • Nachdem ich mich an Post #15 gehalten habe gab es noch diese Fehlermeldung. Danach habe ich nochmals das WWW besucht und bei SO den Eintrag gefunden :

    Code
    sudo apt-get -y install python3-mysql.connector

    Jetzt klappt es. Was ich noch lösen muss:

    Code
    Traceback (most recent call last):
    File "/home/pi/src/AeroCluberfassung.py", line 22, in <module>
    import MFRC522
    File "/home/pi/MFRC522.py", line 290
    print "Size: " + str(backData[0])
                     ^
    SyntaxError: invalid syntax

    das scheint mir wohl noch ein Problem von Python 2.7 zu sein. Die Dateien muss ich wohl auch mit 2to3 aufbereiten.

    Gruß pro2311:)

  • Nachdem ich auch dieses erledigt habe, komme ich zur nächsten Meldung:

    Code
    raceback (most recent call last):
    File "/home/pi/src/AeroCluberfassung.py", line 22, in <module>
    import MFRC522
    File "/home/pi/MFRC522.py", line 5, in <module>
    import spi
    ImportError: No module named 'spi'

    wie bekomme ich diese jetzt auch noch weg? :conf:

    Danke

    Gruß pro2311:)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!