Jump to content

[Python] ImportError: No module named tinkerforge.ip_connection


Recommended Posts

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

Link zu diesem Kommentar
Share on other sites

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 :D

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
Share on other sites

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

>>>

 

Link zu diesem Kommentar
Share on other sites

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...

Link zu diesem Kommentar
Share on other sites

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

 

 

Link zu diesem Kommentar
Share on other sites

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.

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
Share on other sites

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.

Link zu diesem Kommentar
Share on other sites

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?

Link zu diesem Kommentar
Share on other sites

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?

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...