kuchenmann Geschrieben September 2, 2012 at 09:18 Geschrieben September 2, 2012 at 09:18 Hallo zusmamen, ich hab ein kleines Problem mit Python. Bei Python bin ich Neuling, ich hab jedoch Grundkenntnisse in C++ und PHP. Ich habe bewusst Python gewählt weil ich was neues lernen wollte. Ich glaub dass es einfach nur ein Fehler beim Pfad ist. Ich wollte das LCD(20x4)-Beispiel ausprobieren, bekomm jedoch den Fehler: Traceback (most recent call last): File "C:\Users\Janik\Desktop\tinkerforge\LCD\example_hello_world.py", line 8, in <module> from tinkerforge.ip_connection import IPConnection ImportError: No module named tinkerforge.ip_connection >>> Was ist denn da falsch? Ich hab mir die Anleitung und Tutorials von Python schon durchgelesen, da steht dann aber immer nur so 'Run the script' nur blöd das es bei mir nicht läuft MfG kuchenmann Zitieren
AuronX Geschrieben September 2, 2012 at 09:23 Geschrieben September 2, 2012 at 09:23 Sieht so aus als hättest du die Python-Bindings nicht bzw. nicht dort wo sie erwartet werden. Ich glaube, dass du die Bindings einfach nur ins gleiche Verzeichnis werfen musst wie die Datei die du ausführst. Falls du das schon getan hast, dann werden sie möglicherweise doch woanders erwartet und meine Kenntnisse sind gerade zu staubig Zitieren
kuchenmann Geschrieben September 2, 2012 at 09:34 Autor Geschrieben September 2, 2012 at 09:34 Doch eigentlich schon. Folgende Dateien sind im Verzeichnis: bricklet_lcd_20x4.py example_hello_world.py ip_connection.py Deswegen versteh ich das ganze ja auch nicht weil doch eigentlich alles da ist??? Zitieren
fjahn Geschrieben September 2, 2012 at 09:47 Geschrieben September 2, 2012 at 09:47 Bei mir war es so : MEin Onkel musste es (bei windows) über die eingabehilfe instalieren weil anscheinend ein fehler drauf ist aber ich weiß auch ich habe auch schon dewegen einen tread aufgemacht. Bei meinem Laptop geht es (onkel hat es gemacht) und bei meinem richtiger geht es nicht und über die Eingabe hilfe komm ich nicht rein und weiß nicht wie es funktioniert Hoffentlich finden wir ein Lösung Fjahn Zitieren
kuchenmann Geschrieben September 2, 2012 at 09:54 Autor Geschrieben September 2, 2012 at 09:54 Also ich habe es nicht über die Eingabeaufforderung installiert. Zuvor hat ich es von der offiziellen Seite geladen bekamm jedoch immer einen Fehler, dass er irgendwelche Einträge in der Regestry nicht findet. Das lag daran dass ich ein 64-bit System hab. Fand dann aber im Downloadbereich endlich eine Version die funktionierte (2.7.3) Zurück zu meinem Problem: Was ich gerade gefunden habe: (Wie öffne ich denn einen Spoiler?) If you just want to use a few Bricks or Bricklets and you don’t want to have this many files in you project, you can also copy the files as they are needed. For the Stepper Brick examples we need ip_connection.py and stepper_brick.py. After copying these in the project folder: example_folder/ -> ip_connection.py -> brick_stepper.py -> example_configuration.py we have to remove the tinkerforge package from the examples, i.e. instead of: from tinkerforge.ip_connection from tinkerforge.brick_stepper we use: from ip_connection from brick_stepper After that, the example can be executed again. Also hab ich meinen Quellcode angepasst, funktioniert jedoch immer noch nicht. Fehler jetzt: Traceback (most recent call last): File "C:\Users\Janik\Desktop\tinkerforge\LCD\example_hello_world.py", line 9, in <module> from bricklet_lcd_20x4 import LCD20x4 File "C:\Users\Janik\Desktop\tinkerforge\LCD\bricklet_lcd_20x4.py", line 14, in <module> from .ip_connection import Device, IPConnection, Error ValueError: Attempted relative import in non-package >>> Zitieren
ArcaneDraconum Geschrieben September 2, 2012 at 11:30 Geschrieben September 2, 2012 at 11:30 Leute, eine Bitte, wenn ihr wirklich Hilfe wollt. Schreibt mal was über Euer System und vor allem, was konkret funktioniert. Laptop / normaler Rechner / 64-Bit-System ist ein bisschen wenig. Klappt die Verbindung, wenn der Brickviewer läuft? Dann kann man davon ausgehen, dass es kein Treiberproblem ist..... Das ganze hört sich für mich ein wenig nach (Achtung Autovergleich!): Hilfe mein Auto fährt nicht, aber mit dem anderen Auto kann ich hupen.... Nicht falsch verstehen, aber so gibt es tausende Möglichkeiten, was schiefgelaufen sein kann. Wir wollen ja systematisch an das Problem rangehen... Zitieren
fjahn Geschrieben September 2, 2012 at 12:44 Geschrieben September 2, 2012 at 12:44 Also bei mir ist ein win 7 / 64 bit / 2 jahre allt ---> NORMALER PC xp / 32 bit / 3 jahre alt (amd think pad t61) ---> Laptop Auf beiden funktioniert der Brickv bei allen bricklets und bricks. Auf der Laptop laufen auch die Programme aber auch dem normalen pc nicht kommt dann das was ober in der betreffzeile steht. mir ist aufgefallen das im Tastmanager unter Prozesse ein Prozess sein muss der so heißt: brickd_windoes.exe oder?? und diesen hat mein onkel auf dem Laptop nur mit der eingabehilfe geschaft und jz funktioniert es auf dem laptop. ich wollte jz auf dem normalen pc dies machen (schneller) und dann kam diese meldung wider und unter Prozesse ist nicht zu finden von dem Prozess (brickd_windows.exe) Fjahn Zitieren
ArcaneDraconum Geschrieben September 2, 2012 at 13:11 Geschrieben September 2, 2012 at 13:11 Also wenn der BrickViewer die Bricks und Bricklets korrekt anzeigt, würde ich mir da keine Gedanken über die Anzeige im Taskmanager machen. Der BrickDaemon ist ja dann auf jeden Fall am laufen. Offensichtlich ist es doch ein Problem, dass Deine Bindings nicht gefunden werden. Ich arbeite wenig mit Python auf dem Windowsrechner. Ich lass die immer dirket auf meiner DiskStation laufen. Ich habe deshalb auch nur ein Python 2.7.3 auf dem Win7 Rechner installiert. Auch hier habe ich die Bindings nicht per Setup installiert, sondern von Hand reibkopiert. Wenn Du die Bindings entpackst gibt es ein Verzeichnis Source, darunter ein Tinkerforgeverzeichnis, darin sind ja die ganzen Bindings. Dieses Tinkerforgeverzeichnis habe ich geschnappt und unter C:\Python27\Lib kopiert (das Verzeichnis nicht die einzelnen Dateien). So werden alle Module immer gefunden... Ansonsten fahre ich immer ganz gut damit dieses Verzeichnis als Unterverzeichnis meines Programmverzeichnisses zu verwenden. Dann aber wieder die Programmzeile 'from tinkerforge.ip_connection import IPConnection' verwenden. Zitieren
kuchenmann Geschrieben September 2, 2012 at 13:22 Autor Geschrieben September 2, 2012 at 13:22 Ich hab genauso wie du die 2.7.3 installiert. Auf meinem Desktop im tinkerforge Ordner liegen auch alle benötigten Bindings. Seit dem diese dort vorhanden sind bekomm ich auch den Fehler (erster Post) nicht mehr, dass die Dateien fehlen. Dafür bekomm ich halt einen anderen.(siehe letzer Post) Was stimmt denn da nicht? BrickViewer und Deamon sind keinerlei Problem. Ohne Problem installieren könnnen und wird auch alles erkannnt. MfG kuchenmann Zitieren
fjahn Geschrieben September 2, 2012 at 13:47 Geschrieben September 2, 2012 at 13:47 So danke jz funktioniert es:) Fjahn Zitieren
ArcaneDraconum Geschrieben September 2, 2012 at 13:50 Geschrieben September 2, 2012 at 13:50 @Fjahn: Schön zu sehen!!! @kuchenmann: Kannst mal einen Codeschnipsel posten. Ich glaube da stimmt was mit der Initialisierung nicht. Zitieren
kuchenmann Geschrieben September 2, 2012 at 14:12 Autor Geschrieben September 2, 2012 at 14:12 Gerne. Code liegt wei gesagt auf C:\...Desktop\thinkerforge\LCD Python ist in D:\Programme\Python #!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 UID = "94s" # Change to your UID from ip_connection import IPConnection from bricklet_lcd_20x4 import LCD20x4 if __name__ == "__main__": ipcon = IPConnection(HOST, PORT) # Create IP connection to brickd lcd = LCD20x4(UID) # Create device object ipcon.add_device(lcd) # Add device to IP connection # Don't use device before it is added to a connection # Turn backlight on lcd.backlight_on() # Write "Hello World" lcd.write_line(0, 0, 'Hello World') raw_input('Press key to exit\n') # Use input() in Python 3 ipcon.destroy() In der ursprünglichen Datei hieß es: from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_lcd_20x4 import LCD20x4 Das musst ich jedoch abändern (siehe vorherige Posts) MfG kuchenmann Zitieren
ArcaneDraconum Geschrieben September 2, 2012 at 14:22 Geschrieben September 2, 2012 at 14:22 Hmmmm mir fallen 2 Dinge auf: 1. Ich meine aus Deinen Ausführungen rausgelesen zu haben, dass Du unter Windows arbeitest. Somit müsste die erste Zeile lauten: #!C:\Python27\python.exe 2. Bei UID="94s" ... hat Dein LCD auch die UID 94s? (Ich persönlich ändere vom BrickViewer aus alle UIDs meiner Bricklets ab. Somit sind sie selbstsprechend und ich sehe sofort welche Bricklets erkannt wurden. Macht es auch beim Coden einfacher). 3. Kopier Dir doch mal das Tinkerforgeverzeicnis als Unterverzeichnis in Dein Programmverzeichnis und geh auf die alte import from Form zurück. Zitieren
fjahn Geschrieben September 2, 2012 at 14:42 Geschrieben September 2, 2012 at 14:42 Also bei ist die erst zeile gleich und es funktioniert bei mir jz ja auch Zitieren
ArcaneDraconum Geschrieben September 2, 2012 at 14:46 Geschrieben September 2, 2012 at 14:46 Mag unter IDLE stimmen, wenn das Programm von der Kommandozeile aus aufrufst sollte der Interpreter einen Hinweis haben, wo er Python finden kann. Zitieren
kuchenmann Geschrieben September 2, 2012 at 15:02 Autor Geschrieben September 2, 2012 at 15:02 Hab nun alles wie folgt geändert: #!E:\Programme\Python\python.exe # -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 UID = "94s" # Change to your UID from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_lcd_20x4 import LCD20x4 if __name__ == "__main__": ipcon = IPConnection(HOST, PORT) # Create IP connection to brickd lcd = LCD20x4(UID) # Create device object ipcon.add_device(lcd) # Add device to IP connection # Don't use device before it is added to a connection # Turn backlight on lcd.backlight_on() # Write "Hello World" lcd.write_line(0, 0, 'Hello World') raw_input('Press key to exit\n') # Use input() in Python 3 ipcon.destroy() Ich hab meinen tinkerforge Ordner mit den Bindings und Quellcode als Unterordner in Libs kopiert also E:\Programme\Python\Libs\tinkerforge\ Jetzt bekomm ich wieder meinen ersten Fehler dass er die Bindings nicht findet. UID stimmt. Wie kann ich die denn im Viewer abändern? Zitieren
ArcaneDraconum Geschrieben September 2, 2012 at 15:15 Geschrieben September 2, 2012 at 15:15 Das ist blöde Pack in diesem Falle mal das tinkeforge als Unterverzeichnis von "C:\Users\Janik\Desktop\tinkerforge\LCD\", also als Unterverzeichnis von dem Verzeichnis, in dem Dein Programm steht. Zitieren
kuchenmann Geschrieben September 2, 2012 at 15:18 Autor Geschrieben September 2, 2012 at 15:18 Nein daran liegts nicht. Habs lösen können. Steht dick und fett in der Fehlermeldung. in der bricklet_lcd... war from .ipconfig drin gestanden Also hab ich den punkt rausgemacht und siehe da es geht. Wo bei das ja auch mit Punkt gehen müsste dann müsste nur ich etwas in meinem code ändern oder? Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.