Probleme mit dem Import von pydispatch

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
mephisto-online
User
Beiträge: 167
Registriert: Sonntag 29. September 2013, 17:05

Hallo miteinand,

nachdem ich das pydispatch-Paket mit pip2 installiert habe, wird es mir auch mit pip2 list angezeigt. Trotzdem bekomme bei der Ausführung eines Testprogramms folgende Fehlermeldung:

Code: Alles auswählen

    from pydispatch import dispatcher
ImportError: No module named pydispatch
Woran kann das liegen ?

Grüße
m-o
mephisto-online
User
Beiträge: 167
Registriert: Sonntag 29. September 2013, 17:05

In /usr/lib/python2.7/site-packages/ gibt es die Verzeichnisse dispatch und pydispatch-1.1.0-py2.7.egg-info. Die Datei /usr/lib/python2.7/site-packages/pydispatch-1.1.0-py2.7.egg-info/installed-files.txt sieht folgendermassen aus:

Code: Alles auswählen

../dispatch/server.py
../dispatch/handler.py
../dispatch/daemon.py
../dispatch/client.py
../dispatch/__init__.py
../dispatch/VERSION
../dispatch/server.pyc
../dispatch/handler.pyc
../dispatch/daemon.pyc
../dispatch/client.pyc
../dispatch/__init__.pyc
./
top_level.txt
SOURCES.txt
requires.txt
PKG-INFO
dependency_links.txt
Was kann da noch nicht stimmen ?
BlackJack

@mephisto-online: Das sieht ja wohl so aus als wenn das Paket `dispatch` heisst. So steht es auch in dem Beispiel auf der Projektseite bei Github.
mephisto-online
User
Beiträge: 167
Registriert: Sonntag 29. September 2013, 17:05

@BlackJack
ja, könnte man annehmen. Es wird aber unter genau diesem Namen für ein anderes (aktives) Paket benötigt.
Oben steht aber wie ich es installiert habe: mit pip aus den offiziellen PyPi-"Repos" ! Und es wird auch mit diesem Namen gelistet (aber in installed.txt auf das Verzeichnis dispatch verlinkt).
BlackJack

@mephisto-online: Okay, ich formuliere das mal etwas präziser: Das Paket zum Importieren heisst `dispatch`. Und wenn man das installieren möchte, dann installiert man pydispatch. Der *Projektname* im Paketindex muss nicht mit dem Paket- oder Modulnamen identisch sein. Er ist oft gleich, aber halt nicht immer.
mephisto-online
User
Beiträge: 167
Registriert: Sonntag 29. September 2013, 17:05

Wenn ich wieder am Rechner bin, werde ich mal probieren, ob das mit import dispatch funzt. Ich glaube aber, dass ich das schon versucht hatte...
mephisto-online
User
Beiträge: 167
Registriert: Sonntag 29. September 2013, 17:05

Das Paket benötige ich für PyGly. Habe jetzt an anderer Stelle gefunden, dass das erforderliche Paket PyDispatcher heisst. Damit funktioniert auch das PyGly-Testprogramm.

@BlackJack
Zu Deinem Hinweis "Das Paket zum Importieren heisst `dispatch`."
Nein, scheinbar nicht, denn wenn ich einfach in der Py2-Shell "import pydispatch" ausführen lasse, geht es. Im PyGly-Testprogramm geht es mit gleicher Syntax

Code: Alles auswählen

  File "/usr/lib/python2.7/site-packages/pygly/viewport.py", line 9, in <module>
    from pydispatch import dispatcher
nicht. Ist aber jetzt für mich zwar verwirrend, aber nicht relevant, weil der Fehler woanders lag.

@BlackJack
Dein weiterer Hinweis "Der *Projektname* im Paketindex muss nicht mit dem Paket- oder Modulnamen identisch sein. Er ist oft gleich, aber halt nicht immer" nimmt mich nicht gerade noch mehr für Python ein, wenn das wirklich so ist ...
BlackJack

@mephisto-online: Doch das Modul über das Du am Anfang geschrieben und offensichtlich auch installiert hast laut der Dateinamen, muss man als `dispatch` importieren. Das Projekt heisst pydispatch. Das was sich als `pydispatch` importieren lässt, ist das PyDispatcher-Projekt. Zwei verschiedene Sachen.

Das Projektname und Modul- oder Paketname nicht gleich sein müssen ist ja ganz offensichtlich so. Andere Beispiele die mir so auf Anhieb einfallen: Projekt 'beatifulsoup4' → Import `bs4`, Projekt `wxPython` → Import `wx`. Und bei vielem was irgendeine externe Bibliothek „wrapped” haben die Projekte den Bibliotheksnamen mit einem ”Py”-Präfix, aber die Module/Pakete dann nicht. Was ja auch wenig Sinn machen würde, denn man weiss ja wenn man Python-Quelltext schreibt, das man da Python-Module importiert.
mephisto-online
User
Beiträge: 167
Registriert: Sonntag 29. September 2013, 17:05

Hmm : pydispatch -> import dispatch. PyDispatcher -> import pydispatch. Leuchtet ein...
Danke !
Antworten