Hallo , ich programmiere gerade einen Cocktailmaschine nach dem ich alles eingerichtet habe , wurde der Code aus dem Internet heruntergeladen .
Ich wollte ihn mit dem hier drunter stehen ,, sudo Python bartender.py starten , leider kam der folgende Fehler , habt ihr eventuell eine Idee ? ´´home/azubi29/Downloads/bartender.py´´, line 123
def readPumpConfiguration():
IndentationError: unindent does not match any outer indentation level
Unter folgenden Link ist die Bartender.py zu finden . Vielleicht kann mir ja wer behilflich sein
https://github.com/Pazekal90/Smart-Bart ... rtender.py
Gruß Tim
Cocktailmaschine Bartender.py Problem
Die Namensgebung lässt vermuten, dass die bartender.py nicht von jemanden geschrieben wurde, der regelmäßig Python entwickelt.
Die Fehlermeldung sagt: Irgendwo stimmt etwas mit der Einrückung nicht, was dem Parser in Zeile 123 auffällt.
Entweder ist die Zeile (oder eine Zeile auf dem Weg dorthin) falsch eingerückt.
Der Autor der Datei rückt mit Tabs ein, nicht mit Leerzeichen, wie es eigentlich Konvention ist.
Und Zeile 75 fällt augenscheinlich völlig aus dem Rahmen.
Die Fehlermeldung sagt: Irgendwo stimmt etwas mit der Einrückung nicht, was dem Parser in Zeile 123 auffällt.
Entweder ist die Zeile (oder eine Zeile auf dem Weg dorthin) falsch eingerückt.
Der Autor der Datei rückt mit Tabs ein, nicht mit Leerzeichen, wie es eigentlich Konvention ist.
Und Zeile 75 fällt augenscheinlich völlig aus dem Rahmen.
- DeaD_EyE
- User
- Beiträge: 1217
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Zeile 68 hat die falsche Einrückung. Es werden Tabs verwendet. Es sollten aber 4 Leerzeichen verwendet werden.
Code: Alles auswählen
PS C:\Users\XXX\Downloads> py -3.13 -m ruff check .\bartender.py
bartender.py:68:1: SyntaxError: unindent does not match any outer indentation level
|
67 | # configure interrups for buttons
68 | GPIO.setup(self.btn1Pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
| ^^^^
69 | GPIO.setup(self.btn2Pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
|
bartender.py:118:9: SyntaxError: Simple statements must be separated by newlines or semicolons
|
116 | self.strip.show()
117 |
118 | print "Done initializing"
| ^
119 |
120 | @staticmethod
|
bartender.py:255:16: E703 Statement ends with an unnecessary semicolon
|
254 | # sleep for a couple seconds to make sure the interrupts don't get triggered
255 | time.sleep(2);
| ^ E703
256 |
257 | def shutdown(self):
|
= help: Remove unnecessary semicolon
bartender.py:270:16: E703 Statement ends with an unnecessary semicolon
|
268 | self.led.image(self.image)
269 | self.led.display()
270 | time.sleep(5);
| ^ E703
271 |
272 | #Clean shutdown device
|
= help: Remove unnecessary semicolon
bartender.py:277:9: SyntaxError: Simple statements must be separated by newlines or semicolons
|
276 | def displayMenuItem(self, menuItem):
277 | print menuItem.name
| ^
278 | self.led.clear()
279 | self.draw.rectangle((0,0,self.screen_width,self.screen_height), outline=0, fill=0)
|
bartender.py:306:19: E701 Multiple statements on one line (colon)
|
304 | head = 0 # Reset to start
305 | color >>= 8 # Red->green->blue->black
306 | if(color == 0): color = 0xFF0000 # If black, reset to red
| ^ E701
307 |
308 | tail += 1 # Advance tail position
|
bartender.py:309:30: E701 Multiple statements on one line (colon)
|
308 | tail += 1 # Advance tail position
309 | if(tail >= self.numpixels): tail = 0 # Off end? Reset
| ^ E701
310 |
311 | def lightsEndingSequence(self):
|
bartender.py:382:16: E703 Statement ends with an unnecessary semicolon
|
381 | # sleep for a couple seconds to make sure the interrupts don't get triggered
382 | time.sleep(2);
| ^ E703
383 |
384 | # reenable interrupts
|
= help: Remove unnecessary semicolon
Found 8 errors.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
@Tim_Raspberry Pi: die von Dir verlinkte Datei läßt sich ohne Probleme starten. Die von dir angegeben Zeile 123 ist eine Leerzeile, Du hast die Datei also irgendwie modifiziert. Benutzt Du auch Python 2.7?
@sparrow: bei Kommentaren ist die Einrückung egal
@DeaD_EyE: es handelt sich um ein Python2-Programm, dort sind die Tab-Space-Regeln noch freier.
@sparrow: bei Kommentaren ist die Einrückung egal
@DeaD_EyE: es handelt sich um ein Python2-Programm, dort sind die Tab-Space-Regeln noch freier.
- __blackjack__
- User
- Beiträge: 13997
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
An der statischen Analyse in DeaD_EyeEs Beitrag sieht man an den Semikolons die Vermutung bestätigt, dass das kein Python-Programmierer geschrieben hat. Und wenn man dann rein schaut die ganzen unnötigen Klammern bei ``if`` & Co, oder wie über Schlüssel iteriert wird um in der Schleife dann über den Schlüssel auf die Werte zuzugreifen, statt gleich über die Werte zu iterieren, oder Schlüssel/Wert-Paare wenn man beides braucht.
Die Objektorientierung lässt auch zu wünschen übrig mit den ganzen Schleifen, die immer wieder ähnlich über eine verschachtelte Wörterbuchstruktur iterieren oder die Indirektion über Zeichenketten die einen ”Typ” repräsentiert, wo dann per ``if``/``elif``-Kaskade herausgefunden wird was anhand dieses Typs für Verhalten folgen soll, statt dass das Objekt von dem man diese Zeichenkette abgefragt hat, das Verhalten kennt/implementiert. Und das mindestens in zwei verschiedenen Funktionen.
Oder dieses ”Schmuckstück”, das es noch mal mit leicht anderen Namen gibt:
`self.running` kann `True` oder `False` sein, und es kann den Wert 2 annehmen — WTF‽ Aber klar, das macht natürlich Sinn wenn man dann folgenden Code findet:
Ich nehme mal an dem Autor war nicht klar, dass man aus der Nummer nicht mehr raus kommt wenn das mal 2 angenommen hat, weil das dann auf dem Weg nach unten weder 1 (True) noch 0 (False) treffen wird, weil Gleitkommazahlen und (Un)genauigkeit:
Die Objektorientierung lässt auch zu wünschen übrig mit den ganzen Schleifen, die immer wieder ähnlich über eine verschachtelte Wörterbuchstruktur iterieren oder die Indirektion über Zeichenketten die einen ”Typ” repräsentiert, wo dann per ``if``/``elif``-Kaskade herausgefunden wird was anhand dieses Typs für Verhalten folgen soll, statt dass das Objekt von dem man diese Zeichenkette abgefragt hat, das Verhalten kennt/implementiert. Und das mindestens in zwei verschiedenen Funktionen.
Oder dieses ”Schmuckstück”, das es noch mal mit leicht anderen Namen gibt:
Code: Alles auswählen
TextNew = ''
for ii in words_list[:-1]:
TextNew = TextNew + ii + "\n"
TextNew += words_list[-1]
Code: Alles auswählen
if self.running not in (True,False):
self.running -= 0.1
if self.running == 0:
self.running = False
Code: Alles auswählen
In [2]: 2 - 0.1
Out[2]: 1.9
In [3]: _ - 0.1
Out[3]: 1.7999999999999998
In [4]: _ - 0.1
Out[4]: 1.6999999999999997
In [5]: _ - 0.1
Out[5]: 1.5999999999999996
In [6]: _ - 0.1
Out[6]: 1.4999999999999996
In [7]: _ - 0.1
Out[7]: 1.3999999999999995
In [8]: _ - 0.1
Out[8]: 1.2999999999999994
In [9]: _ - 0.1
Out[9]: 1.1999999999999993
In [10]: _ - 0.1
Out[10]: 1.0999999999999992
In [11]: _ - 0.1 # Wird leider nicht 1.
Out[11]: 0.9999999999999992
In [12]: _ - 0.1
Out[12]: 0.8999999999999992
In [13]: _ - 0.1
Out[13]: 0.7999999999999993
In [14]: _ - 0.1
Out[14]: 0.6999999999999993
In [15]: _ - 0.1
Out[15]: 0.5999999999999993
In [16]: _ - 0.1
Out[16]: 0.49999999999999933
In [17]: _ - 0.1
Out[17]: 0.39999999999999936
In [18]: _ - 0.1
Out[18]: 0.2999999999999994
In [19]: _ - 0.1
Out[19]: 0.19999999999999937
In [20]: _ - 0.1
Out[20]: 0.09999999999999937
In [21]: _ - 0.1 # Und auch 0 treffen wir hier nicht.
Out[21]: -6.38378239159465e-16
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Hallo Tim, zeigst du uns auch, was du programmiert hast?Tim_Raspberry Pi hat geschrieben: Donnerstag 24. Oktober 2024, 21:22 Hallo , ich programmiere gerade einen Cocktailmaschine nach dem ich alles eingerichtet habe , wurde der Code aus dem Internet heruntergeladen .

MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Hi , danke für die ganze Hilfe . Das Programm habe ich alles heruntergeladen, auf den raspberry pi gespeichert. Mit dem einrückfehler habe ich herausgefunden nun habe ich ein ELFClass Fehler 32 . Liegt das an der Architektur des raspberrys da dieser ja 64 Bit hat ? Und das ja ein 32 Bit Fehler ist ? Was kann ich tuen das der Fehler verschwindet ?
Gruß Tim
Gruß Tim
- __blackjack__
- User
- Beiträge: 13997
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Tim_Raspberry Pi: Am besten einen anderen Quelltext als Basis nehmen, oder Python (3!) lernen und selbst ein Programm entwickeln. 
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Ja, hoffe einfach das es klappt jetzt . Die Zeit habe ich leider nicht mehr ich muss in 2 Wochen meine Prüfung abgeben
Was kann ich dagegen tuen das es läuft .
Gruß
Was kann ich dagegen tuen das es läuft .
Gruß
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
@sirius3 In der Anleitung die ich verlinkte hatte steht das es Python 3 ist , da habe ich mich drauf verlassen .
Aber leider sind ja ein paar Fehler drin
Aber leider sind ja ein paar Fehler drin
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Wie bekomme ich sonst Python 2.7 auf den raspberry ? Oder könnte dir mir wer umschreiben ? Natürlich gegen einen Obolus wenn alles nicht mehr hilft 
Gruß Tim
Gruß Tim
- __blackjack__
- User
- Beiträge: 13997
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Tim_Raspberry Pi: Du brauchst nichts dagegen tun das es läuft — es läuft ja nicht. 
Hier sind die Änderungen zum Originalprojekt: https://github.com/Joe2824/Smart-Barten ... der:master — da ist ausser der Behauptung in der Readme, dass es mit Python 3 läuft, nichts gemacht worden, dass es auch tatsächlich mit Python 3 läuft.
Der Quelltext ist 6 Jahre alt, für Python 2.7 geschrieben, hat eine binäre Bibliothek für ARM 32 ohne Quelltext im Repository, und sieht auch nicht nach gutem, idiomatischem Python-Quelltext aus. Das ist einfach keine sinnvolle Basis für ein aktuelles Projekt.
Hier sind die Änderungen zum Originalprojekt: https://github.com/Joe2824/Smart-Barten ... der:master — da ist ausser der Behauptung in der Readme, dass es mit Python 3 läuft, nichts gemacht worden, dass es auch tatsächlich mit Python 3 läuft.
Der Quelltext ist 6 Jahre alt, für Python 2.7 geschrieben, hat eine binäre Bibliothek für ARM 32 ohne Quelltext im Repository, und sieht auch nicht nach gutem, idiomatischem Python-Quelltext aus. Das ist einfach keine sinnvolle Basis für ein aktuelles Projekt.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Gut , was können wir machen das es läuft ?
Gruß Tim
Gruß Tim
- __blackjack__
- User
- Beiträge: 13997
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Nichts sinnvolles. 
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Du kannst Dir Hardware von vor 10 Jahren besorgen, einen Raspberry PI2 Model B1 mit ARM-Cortex A7 Prozessor. Darauf ein aus dieser Zeit stammendes Image draufspielen und hoffen, dass Du damit das Programm ans Laufen bringst.
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Aber warum funktioniert es bei denen in der Software ? Mit was hängt das zusammen ?
- __blackjack__
- User
- Beiträge: 13997
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Tim_Raspberry Pi: Bei wem funktioniert was? Das ist Python 2.7 Code mit einer kompilierten ARM 32 Bibliothek. Das ganze ist 6 Jahre alt und wurde für einen Raspi 3 geschrieben. Wenn das ohne Änderungen läuft, dann auf einem entsprechend alten System mit Python 2.7.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Es hatte doch wer geschrieben hier in dem Beitrag das es problemlos läuft der Code . Was bräuchte ich für einen raspberry für Python 2.7 ?
Gruß Tim
Gruß Tim
-
- User
- Beiträge: 14
- Registriert: Donnerstag 24. Oktober 2024, 21:14
Hallo , ja mit dem raspberry 1 . Meint ihr es würde auch gehen auf einen raspberry 3 b + Python 2.7 aufzuspielen ? Oder würde das nicht funktionieren?
Gruß Tim
Gruß Tim