Probleme beim Import von Modulen aus Ordnern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
AlphaX2
User
Beiträge: 53
Registriert: Dienstag 28. Juni 2011, 10:42

Hallo Leute,

ich hab grade ein Problem und bin mir nicht ganz sicher wie man das "richtig" macht.
Zum Problem: Ich hab eine Anwendung die auf mehrere Module zugreift jeweils in Ordnern, der "Ordnung" und Übersicht halber habe ich die alle in einen Ordner zentralisiert, der "libs" heißt. Diesen wollte ich zukünftig nur noch per import holen und gut sollte sein. ;)

Schematisch sieht das so aus:

<Hauptordner>
libs/
libs/dropbox
libs/fotoshare
libs/oauth
libs/paramiko
libs/pexpect
libs/simplejson
libs/__init__.py

In meiner __init__.py sind auch alle Module via "import <name>" drinnen.

Wenn ich jetzt jedoch ein test.py laufen lasse, bekomme ich einen Fehler:

Code: Alles auswählen

~/MyDocs/FotoShareN9_experimental $ python test.py
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    import libs as fotoshare
  File "/home/user/MyDocs/FotoShareN9_experimental/libs/__init__.py", line 1, in <module>
    import dropbox
  File "/home/user/MyDocs/FotoShareN9_experimental/libs/dropbox/__init__.py", line 1, in <module>
    import client, rest, session
  File "/home/user/MyDocs/FotoShareN9_experimental/libs/dropbox/client.py", line 8, in <module>
    import simplejson as json
ImportError: No module named simplejson
Folglich scheint es, als erkennt das dropbox Modul nicht, das simplejson gleich nebenan liegt.

Also es ist gut möglich, dass ich hier einen Denkfehler hab/zu wenig Ahnung.

Über Hilfe würde ich mich freunen.
Vielen Dank im voraus!

AlphaX2
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Du musst dann auch `libs.simplejson` importieren.

Btw. simplejson ist ab Python 2.6 nicht mehr nötig.
the more they change the more they stay the same
AlphaX2
User
Beiträge: 53
Registriert: Dienstag 28. Juni 2011, 10:42

Dav1d hat geschrieben:Du musst dann auch `libs.simplejson` importieren.

Btw. simplejson ist ab Python 2.6 nicht mehr nötig.
Hmm mein Ziel war es ja das ich nur "libs" importiere und alles da habe, im Endeffekt benötigen meine eigenen Module (in fotoshare) die anderen zum funktionieren.

Jedenfalls hab ich es jetzt so gelöst:

Code: Alles auswählen

import sys
sys.path.append('libs')
import fotoshare
also einen relativen Pfad hinzugefügt, jetzt funktioniert es ganz hervorragend und im Endeffekt so wie ich es mir vorgestellt hatte. Nur weiß ich eben nicht ob das so "sauber" ist, wenn man einfach einen Pfad hinzufügt. :K

Übrigens scheint es simplejson auf dem Nokia N9 (was die Zielplattform ist) auch als Paket zu geben, das dürfte wahrscheinlich sauberer sein, als es mitzuliefern. Wobei ich es eben selber mitliefer weil ich nur einen kleinen Teil davon brauche. Was ist da der "Standard-Weg", ein Paket liefern wenn es das gibt, oder lieber selber ausliefern?

Danke, AlphaX2
Antworten