[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