Seite 1 von 1

"import" findet Datei nicht

Verfasst: Samstag 30. Dezember 2006, 01:26
von Misal
Hallo

Ich bin eigentlich kein Programmierer, sondern brauche Python nur um mit dem Synthesizerprogramm "Csound" arbeiten zu können. Ich arbeite mit Windows XP.
Ich möchte eine Datei mit "Python Shell" mit dem Befehl "import" importieren. Stattdessen kommt immer folgende Meldung:

Code: Alles auswählen

>>> import CsoundVST          #CsoundVST würde ich gerne importieren

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    import CsoundVST
  File "C:\csound\bin\CsoundVST.py", line 5, in <module>
    import _CsoundVST
ImportError: No module named _CsoundVST
Den Pfad "PYTHONPATH" habe ich mittels "Umgebungsvariablen" unter "Systemsteuerung" auf "C:\csound\bin" definiert. Ich bin auch sicher, dass eine CsoundVST.py-Datei in diesem Ordner existiert.
Wenn ich

Code: Alles auswählen

>>> import sys
eingebe, hat "Python Shell" kein Problem, obwohl ich diese Datei unter "C:\csound\bin" nicht finden kann.

Vielen Dank für eine Antwort.

Verfasst: Samstag 30. Dezember 2006, 05:16
von Sr4l
Hallo,
Wenn ich .py Datein importieren die in einem anderen Ordner liegen mach ich folgendes:

Code: Alles auswählen

#! /usr/bin/env python2
#-*- coding: latin-1 -*-
import sys
sys.path.append("C:/pfad")
import lib
nützlich dabei ist sys.platform, wenn man immer zwischen Windows und Linux wechselt und auch die pfade der importierten Datein ändern:

Code: Alles auswählen

if sys.platform=="win32":
   sys.path.append("C:/pfad")
   ...
else:
   sys.path.append("/var/local")
   ...
Wobei er bei dir ja die CsoundVST importiert. Nur die _CsoundVST die in CsoundVST importiert wird findet er nicht. liegt _CsoundVST vielleicht wieder in einem andern Verzeichnis oder gibt es sie nicht?

Soweit ich weiß importiert Python seine eigenen Bibliotheken aus dem Ordner PYTHON_INSTALL_DIR/Lib immer fehlerfrei weil er dort immer sucht. So Bibliotheken wie re, time oder sys sollten oder erher dürfen nicht solche Fehler verursachen.

mfG

Verfasst: Mittwoch 29. Oktober 2008, 18:39
von Zaks
hallo

habe dieses Problem auch, da bei der Einführung von Python nun viele Testmodule angefallen sind.
habe ich mir einen neuen Ordner angelegt und dort alle Module rein kopiert, aber wenn ich nun bei IDLE folgendes eingebe

Code: Alles auswählen

import ModuleName
kommt immer die Ausgabe: kein Module vorhanden das so heißt.

kopiere ich das Module zurück nach /home/meinName/
findet IDLE es wieder.

wo ist der Fehler den ich mache?

Grüße Rene

Verfasst: Mittwoch 29. Oktober 2008, 20:07
von cofi
Der Fehler ist, dass der Pfad in dem das Modul liegt, nicht in der PYTHONPATH Env-Variable ist.

Code: Alles auswählen

import sys
print sys.path
Das Sympton, dass die Module gefunden werden, wenn sie in deinem Home-Folder sind sollte dadurch erklärbar sein, dass Python zuerst im working path, d.h. im aktuellen Ordner sucht.

Verfasst: Mittwoch 29. Oktober 2008, 21:11
von Zaks
danke für die antwort

ja der path ist nicht mit dabei. kann ich dies ändern?

Verfasst: Mittwoch 29. Oktober 2008, 23:28
von cofi
Da gibts 2 Möglichkeiten:

- Anpassen der PYTHONPATH Env-Variable

- Anpassen der `sys.path' im Programm

->

Code: Alles auswählen

import sys
sys.path.append("/neuer/pfad")

Verfasst: Donnerstag 30. Oktober 2008, 09:36
von Zaks
danke jetzt geht es.

warum das nicht so in meinem Buch steht?dort wird das viel komplizierter erklärt.

Verfasst: Donnerstag 30. Oktober 2008, 09:51
von BlackJack
Wobei das jetzt IMHO nicht der "normale" Weg ist oder sein sollte. Entweder schmeisst man das mit das Anwendungsverzeichnis, so das es dort ohne Spielereien an `sys.path` gefunden wird, oder man installiert es ordentlich.

Verfasst: Donnerstag 30. Oktober 2008, 10:58
von Zaks
BlackJack hat geschrieben:oder man installiert es ordentlich.
das heißt??

python nicht ordentlich installiert, oder meist du was anderes?

Verfasst: Donnerstag 30. Oktober 2008, 11:20
von BlackJack
Ich meine das Paket oder Modul vom Drittanbieter sollte so installiert werden, das es ohne Änderungen an `sys.path` importiert werden kann.

Verfasst: Donnerstag 30. Oktober 2008, 12:14
von Leonidas
Also via ``easy_install Paket`` oder ``python setup.py install``.

Verfasst: Donnerstag 30. Oktober 2008, 14:16
von Zaks
BlackJack hat geschrieben:Ich meine das Paket oder Modul vom Drittanbieter sollte so installiert werden, das es ohne Änderungen an `sys.path` importiert werden kann.
also immer in einen vorhandenen Path ablegen?
Leonidas hat geschrieben:Also via ``easy_install Paket`` oder ``python setup.py install``.
Danke, aber Python ist in meiner Distribution schon von Haus aus dabei.das einzige was ich Installiert habe war IDLE.

grüße Zaks

Verfasst: Donnerstag 30. Oktober 2008, 16:44
von cofi
Es geht um die installierten Module, nicht um Python, da es ja funktioniert hat das deine Distribution schon richtig gemacht ;)

In einen Pfad, der schon von Python abgesucht - am besten `/usr/lib/python*/site-packages' - wird oder in den Pfad in dem die Anwendung auch liegt - aber das steht hier ja schon alles.

Verfasst: Donnerstag 30. Oktober 2008, 17:24
von Zaks
ok

habe verstanden :wink:

danke allen

Grüße Rene