[Python] Problema import moduli su Windows

Mr.SpOOn mr.spoon21 a gmail.com
Mer 18 Giu 2008 12:49:41 CEST


On Wed, Jun 18, 2008 at 11:37 AM, simone <simozack a yahoo.it> wrote:
> A me, sinceramente, sembra strano che funzionino anche quelli prima... :)
>
> Secondo me è un problema di "\", visto che normalmente viene
> interpretato come carattere di escape. Per le directory puoi usare
> tranquillamente '/' anche in Windows.

Beh, lo slash posso anche toglierlo, visto che la directory si trova
sullo stesso livello, l'avevo messo solo per prova. Infatti
togliendolo, ho lo stesso errore.

La cosa ancora più strana è questa: ho messo dei print per vedere dove
si bloccasse, quindi ho scritto:

        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)
        print errorModules.values()
        print errorModules.values()[0]
        print errorModules.values()[0].info
        print errorModules.values()[0].info["name"]
        self.errorList = dict((module.info["name"], (module,
module.info["name"]))
                 for module in errorModules.values())

I print li esegue senza problemi, quindi "info" lo trova e infatti l'output è:

[<module 'parityBit' from 'error_recovery\parityBit.pyc'>, <module
'hamming' from 'C:\programmi\Python25\hamming.pyc'>]
<module 'parityBit' from 'error_recovery\parityBit.pyc'>
{'function': 'addParityBit', 'decode': 'checkErrors', 'name': "Bit di parita'"}
Bit di parita'

Però subito dopo c'è il solito errore:

Traceback (most recent call last):
  File "E:\workspace\Python\sdi\proveinterfacciatemp.py", line 555, in <module>
    frame = MyClass(parent=None, id=-1)
  File "E:\workspace\Python\sdi\proveinterfacciatemp.py", line 20, in __init__
    Pannello(panel1, -1)
  File "E:\workspace\Python\sdi\proveinterfacciatemp.py", line 55, in __init__
    for module in errorModules.values())
  File "E:\workspace\Python\sdi\proveinterfacciatemp.py", line 55, in <genexpr>
    for module in errorModules.values())
AttributeError: 'module' object has no attribute 'info'

Non riesco a spiegarmi come sia possibile.


Maggiori informazioni sulla lista Python