Pfad zu externen Modulen wird nicht aufgelöst

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
Flo668
User
Beiträge: 39
Registriert: Mittwoch 23. Juli 2008, 10:41

Ich schreibe eine Python Applikation für eine externe Anwendung (Autodesk Toxik, ist aber auch egal). Die Anwendung stellt ihrerseits Python Module zur Verfügung, die ich auch verwenden muss um mit der Anwendung zu kommunizieren. Logisch, so weit.

das ganze sieht so aus:

Code: Alles auswählen

from autodesk_toxik import admin, pimgr
Wenn ich die Anwendung debuggen will (ich nutze zur Entwicklung Eclipse), erhalte ich den Fehler:
File "/home/admin/workspace/TXKProjectMaker/txkProj001.py", line 352, in importModules
from autodesk_toxik import init, database, admin, pimgr, media
ImportError: No module named autodesk_toxik

Folglich habe ich den Pfad dorthin in PYTHONPATH eingetragen

Wieder nix.

Dann habe ich versucht

Code: Alles auswählen

sys.path.append("/usr/autodesk/toxik/pfadsys.path.append("/usr/autodesk/toxik/pfadzudemding/autodesk_toxik")zudemding/autodesk_toxik")
Hilft auch nix.

Nun bin ich ratlos und hoffe, dass Ihr helfen koennt.
Mein Betriebssystem in Linux- falls es hilft.
Zuletzt geändert von Flo668 am Donnerstag 31. Juli 2008, 16:07, insgesamt 4-mal geändert.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Die Syntax kann so überhaupt nicht funktionieren

Code: Alles auswählen

In [9]: import from os, path
------------------------------------------------------------
   File "<ipython console>", line 1
     import from os, path
               ^
<type 'exceptions.SyntaxError'>: invalid syntax
Das wäre richtig:

Code: Alles auswählen

In [10]: from os import path
Aber der Ansatz das über Python-Path zu machen (sofern nötig) ist schon in Ordnung.
Der Path eintrag darf nicht direkt auf das Package oder Modul zeigen sondern muss auf das Verzeichnis zeigen in dem dieses das Modul/Package liegt.
Flo668
User
Beiträge: 39
Registriert: Mittwoch 23. Juli 2008, 10:41

Danke schonmal!

Ich hatte allerdings sowohl den richtigen import Befehl verwendet, als auch auf das Verzeichnis und nicht auf die Datei verwiesen.

Dementsprechend habe ich die Scriptauszüge oben auch abgeändert.

Trotzdem läuft der Spass immer noch nicht. Das Modul Autodesk_Toxik liegt auf jeden Fall unter dem angegebenen Pfad und ist da vorhanden.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du bist sicher, dass du beim Debuggen den gleichen Interpreter verwendest wie auch sonst verwendet wird?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Flo668
User
Beiträge: 39
Registriert: Mittwoch 23. Juli 2008, 10:41

Ja, bin ich.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Da war bei eclipse-pydev doch irgendwas mit zusätzliche Pfade innerhalb der pydev-Optionen angeben. Hast du das auch gemacht?
Flo668
User
Beiträge: 39
Registriert: Mittwoch 23. Juli 2008, 10:41

auch das habe ich gemacht.
booth
User
Beiträge: 44
Registriert: Mittwoch 31. Oktober 2007, 21:30
Wohnort: Durham, U.K.

Hallo,

Edit (Typo: __init.py__ -> __init__.py)

ich versuche gerade etwas Aehnliches zum laufen zu kriegen. Bei mir hat es irgendwie die Standardpfade nach der Installation von Enthought Dist. verhagelt. Ich moechte gerne Cython benutzen. Da das Verzeichnis <tralala>/Cython eine __init__.py enthaelt sollte es ja eigentlich funktionieren, wenn ich

Code: Alles auswählen

sys.path.append('<tralala>/Cython')

mache. Dannach sollte doch das in <tralala>/Cython enthaltene Distutils (bzw. die Funktion build_ext) per

Code: Alles auswählen

from Cython.Distutils import build_ext
aufrufbar sein, nicht? Funktioniert bei mir nicht. Da beschwert sich Python immer, dass es Cython.Distutils nicht gibt. Wenn ich den Pfad bis Distutils angebe, dann kann ich build_ext aufrufen.

Jemand eine Idee was ich falsch mache?

vG
Zuletzt geändert von booth am Freitag 28. November 2008, 09:02, insgesamt 1-mal geändert.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

booth hat geschrieben:<tralala>/Cython eine __init.py__ enthaelt sollte es ja eigentlich funktionieren
Es muss __init__.py heißen.
booth
User
Beiträge: 44
Registriert: Mittwoch 31. Oktober 2007, 21:30
Wohnort: Durham, U.K.

Tut's auch. Tipo. Sorry
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Funktioniert es denn jetzt?!
Wenn nein: Wie sieht es denn mit einem "import Cython" aus?
booth
User
Beiträge: 44
Registriert: Mittwoch 31. Oktober 2007, 21:30
Wohnort: Durham, U.K.

Nein, funktioniert leider nicht. Hat sich ja auch nichts geaendert. Das __init__.py-Problem war ja nicht echt (ich habe mich hier nur vertippt).

import Cython bringt die Fehlermeldung, dass Cython nicht existiert.

Spielt der Inhalt von __init__.py wirklich keine Rolle? Ich habe gelesen, dass es nur vorhanden sein muss.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Ja es reicht das die Datei existiert.
Ich sehe gerade das du im sys.path.append auch das verzeichnis "Cython" angegeben hast. Das kann nicht funktionieren.

Wenn du folgende Struktur hast:
/usr/meine_libs/Cython

Musst du deinen Pfad so erweitern:

Code: Alles auswählen

sys.path.append("/usr/meine_libs/")
import Cython
booth
User
Beiträge: 44
Registriert: Mittwoch 31. Oktober 2007, 21:30
Wohnort: Durham, U.K.

Das war's. Vielen Dank. In dem Beispiel, das ich per google gefunden habe war angegeben, dass man den Pfad bis zur ersten __init__.py angeben muss. Das ist dann wohl offensichtlich nicht richtig
Antworten