[Python] Problema import moduli su Windows
Mr.SpOOn
mr.spoon21 a gmail.com
Mer 18 Giu 2008 11:12:44 CEST
Salve,
ho scritto un'applicazione in Python quasi interamente su Linux e c'è
una parte di codice nella quale importo automaticamente dei moduli
contenuti in una determinata directory. Su Linux funziona senza
problemi. Oggi ho provato su Windows e mi è toccato cambiare i path,
ovviamente. Per l'esattezza importo moduli da due directory e la cosa
strana è che con una directory sembra funzionare, con l'altra no,
nonostante la posizione sia la stessa. Riporto il codice in questione
qui:
class Pannello(wx.Panel):
def __init__(self, parent, id):
wx.Panel.__init__(self, parent, id)
sys.path.append("codifiche")
sys.path.append("error_recovery")
codes = glob(os.path.join(".\codifiche", "*.py"))
codes = [os.path.splitext(os.path.basename(module))[0] for module in
codes]
modules = dict((code, __import__(code)) for code in codes)
self.codeList = dict((module.info["name"], (module,
module.info["name"]))
for module in modules.values())
errors = glob(os.path.join(".\error_recovery", "*.py"))
errors = [os.path.splitext(os.path.basename(module))[0] for module in
errors]
errorModules = dict((error, __import__(error)) for error in errors)
self.errorList = dict((module.info["name"], (module,
module.info["name"]))
for module in errorModules.values()) <---------
L'errore lo dà nell'ultima riga, dove ho messo la freccia. Ho provato
a inserire un paio di print e ho notato che self.codeList viene creato
senza problemi. E' strano perché in entrambe le directory dalle quali
cerco di importare i moduli (codifiche, error_recovery) ci sono dei
file con una struttura praticamente identica. In entrambi c'è un
dizionario "info", quindi non capisco perché nel primo casa lo trovi e
nel secondo no.
Sul disco la struttura delle directory è la seguente:
E:\workspace\Python\sdi\proveinterfacciatemp.py <--- file del
programma principale
E:\workspace\Python\sdi\codifiche
E:\workspace\Python\sdi\error_recovery
Quindi credo di aver messo bene anche i path (altrimenti, del resto,
non si spiegherebbe perché nel primo caso non dia errore).
Qualche idea?
Grazie.
Maggiori informazioni sulla lista
Python