Seite 1 von 1

Pfad zu externen Modulen wird nicht aufgelöst

Verfasst: Donnerstag 31. Juli 2008, 13:19
von Flo668
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.

Verfasst: Donnerstag 31. Juli 2008, 15:20
von Zap
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.

Verfasst: Donnerstag 31. Juli 2008, 16:11
von Flo668
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.

Verfasst: Donnerstag 31. Juli 2008, 18:08
von Leonidas
Du bist sicher, dass du beim Debuggen den gleichen Interpreter verwendest wie auch sonst verwendet wird?

Verfasst: Freitag 1. August 2008, 08:46
von Flo668
Ja, bin ich.

Verfasst: Freitag 1. August 2008, 15:31
von querdenker
Da war bei eclipse-pydev doch irgendwas mit zusätzliche Pfade innerhalb der pydev-Optionen angeben. Hast du das auch gemacht?

Verfasst: Freitag 1. August 2008, 17:04
von Flo668
auch das habe ich gemacht.

Python package wird nicht gefunden

Verfasst: Donnerstag 27. November 2008, 22:48
von booth
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

Re: Python package wird nicht gefunden

Verfasst: Freitag 28. November 2008, 06:33
von Zap
booth hat geschrieben:<tralala>/Cython eine __init.py__ enthaelt sollte es ja eigentlich funktionieren
Es muss __init__.py heißen.

Verfasst: Freitag 28. November 2008, 09:00
von booth
Tut's auch. Tipo. Sorry

Verfasst: Freitag 28. November 2008, 09:10
von Zap
Funktioniert es denn jetzt?!
Wenn nein: Wie sieht es denn mit einem "import Cython" aus?

Verfasst: Freitag 28. November 2008, 09:21
von booth
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.

Verfasst: Freitag 28. November 2008, 09:37
von Zap
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

Verfasst: Freitag 28. November 2008, 09:56
von booth
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