"import" findet Datei nicht

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
Misal
User
Beiträge: 1
Registriert: Samstag 30. Dezember 2006, 00:47

Samstag 30. Dezember 2006, 01:26

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.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Samstag 30. Dezember 2006, 05:16

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
Zaks
User
Beiträge: 6
Registriert: Mittwoch 29. Oktober 2008, 17:55

Mittwoch 29. Oktober 2008, 18:39

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
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Mittwoch 29. Oktober 2008, 20:07

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.
Zaks
User
Beiträge: 6
Registriert: Mittwoch 29. Oktober 2008, 17:55

Mittwoch 29. Oktober 2008, 21:11

danke für die antwort

ja der path ist nicht mit dabei. kann ich dies ändern?
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Mittwoch 29. Oktober 2008, 23:28

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")
Zaks
User
Beiträge: 6
Registriert: Mittwoch 29. Oktober 2008, 17:55

Donnerstag 30. Oktober 2008, 09:36

danke jetzt geht es.

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

Donnerstag 30. Oktober 2008, 09:51

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.
Zaks
User
Beiträge: 6
Registriert: Mittwoch 29. Oktober 2008, 17:55

Donnerstag 30. Oktober 2008, 10:58

BlackJack hat geschrieben:oder man installiert es ordentlich.
das heißt??

python nicht ordentlich installiert, oder meist du was anderes?
BlackJack

Donnerstag 30. Oktober 2008, 11:20

Ich meine das Paket oder Modul vom Drittanbieter sollte so installiert werden, das es ohne Änderungen an `sys.path` importiert werden kann.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 30. Oktober 2008, 12:14

Also via ``easy_install Paket`` oder ``python setup.py install``.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Zaks
User
Beiträge: 6
Registriert: Mittwoch 29. Oktober 2008, 17:55

Donnerstag 30. Oktober 2008, 14:16

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
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Donnerstag 30. Oktober 2008, 16:44

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.
Zaks
User
Beiträge: 6
Registriert: Mittwoch 29. Oktober 2008, 17:55

Donnerstag 30. Oktober 2008, 17:24

ok

habe verstanden :wink:

danke allen

Grüße Rene
Antworten