Pfad eines moduls ändern

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
mic1390
User
Beiträge: 3
Registriert: Donnerstag 24. April 2014, 10:37

Hallo!

Folgendes Problem:
Ich habe eine Funktion in einem Modul geschrieben, habe diese in einem eigenen Ordner auf meinem Rechner gespeichert.
Anschließend habe ich ein Hauptprogramm erstellt, indem ich das Modul importieren möchte, um die erstellte Funktion aufzurufen. Nun habe ich aber dieses Hauptprogramm in einem anderen Ordner gespeichert, um die Übersicht zu behalten.
==> dabei gibt mir Python fogendes Problem aus: "ImportError: No module named modul_permutation"

speichere ich jedoch das Modul in dem gleichen Ordner wo sich das Hauptprogramm befindet, dann läuft das Hauptprogramm unter Verwendung des Moduls und der Funktion.

Ich habe etliche Foren durchforstet und folgendes probiert, jedoch ohne Erfolg:
* modul_permutation.path.append("C:\\Users\\Mic1390\\Documents\\Python Scripts\\Testprogramme")
==> mit Backslash und normalem Slash sowie einfachem und doppeltem Anführungszeichen
* export PYTHONPATH = $PYTHONPATH:...
==> kommt zu einem ähnlichen Problem

heir mein Code des Hauptprogramms:
_____________________________________________
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 15 13:43:57 2014

@author: Michael
"""

import modul_permutation
modul_permutation.path.append("C:\\Users\\Mic1390\\Documents\\Python Scripts\\Testprogramme")

while True:
i = raw_input("Geben Sie eine Zeichenkette ein: ")
print modul_permutation.perm(i)
_____________________________________________

Bin für jede Antwort dankbar!
BlackJack

@mic1390: Setze entweder die Umgebungsvariable PYTHONPATH entsprechend, und zwar unter Windows nicht nach einer Anleitung für Unix/Linux, oder Installiere das Modul so dass man nichts an Pfaden ändern muss.

An `sys.path` sollte man IMHO nur rumspielen wenn man weiss was man tut, das ist immer zweite Wahl wenn man es aus irgendwelchen Gründen nicht ordentlich machen kann.

Deine Namensgebunden sind nicht so besonders. Bei einem Modul braucht man nicht `modul_` in den Namen schreiben. Wenn es kein Modul wäre, würde man es nicht importieren. Der Namenszusatz bringt also nichts.

`perm()` ist eine unnötige Abkürzung und keine Tätigkeit. `permutate()` oder `generate_permutations()` wären bessere Namen für eine Funktion die den Benutzer nicht so viel raten lassen müssen.

Bei `i` erwarten Programmierer eine ganze Zahl und keine Zeichenkette. `i` sagt hier auch gar nichts darüber was der Wert im Programm bedeutet.

Du weisst das es `itertools.permutations()` in der Standardbibliothek gibt?
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@mic1390
Wenn ein Modul nicht gefunden wird, befindet es sich in einem Verzeichnis, das von Python nicht durchsucht wird, siehe `sys.path`. Wenn also der Pfad, in dem sich Dein Modul befindet, nicht in `sys.path` enthalten ist, musst Du diesen an die Liste anhängen, auf einem Linux OS kann das z. B. so aussehen:

Code: Alles auswählen

>>> import sys
>>> sys.path.append('/home/me/my/very/special/modulepath')
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
mic1390
User
Beiträge: 3
Registriert: Donnerstag 24. April 2014, 10:37

Mittlerweile hab ichs, hab gedacht man müsste stat dem sys bei sys.path.append("......") den eigenen Modulnamen nehmen.

unter Windows funktioniert das ganze dann so:
__________________________
import sys
sys.path.append("C:\Users\Michael\Documents\Python Scripts\Testprogramme")
import modul_permutation

while True:
zeichenkette = raw_input("Geben Sie eine Zeichenkette ein: ")
print modul_permutation.perm(zeichenkette)
__________________________

@BlackJack ich habe "itertools.permutations()" bei meiner Funktion in Verwendung

Vielen Dank euch beiden!
Antworten