python setup cx_freeze e importazione di moduli



python cx_freeze setup py (1)

Voglio compilare un modulo Python 3.3 con i sottomoduli usando cx_freeze.

Quindi, la mia dirutura è:

projectname/
     __init__.py
     submodule1/
          __init__.py
          bootstrap.py
          script1.py
          submodule11/
                   script2.py
     submodule2/
          ...

Nella __init__.py importazione

from submodule1 import bootstrap

e dal bootstrap

import submodule1.submodule11.script2

Se eseguo il file init, tutto va bene e lo script con le importazioni del submodule viene eseguito correttamente.

Quando lo compilo, utilizzo questo setup.py:

from cx_Freeze import setup,Executable
import sys

includes = []
excludes = ['Tkinter']
packages = ['submodule1', 'submodule2']
base = "Win32GUI"
setup(
    name = 'myapp',version = '0.1',description = 'app',author = 'user',
    options = {'build_exe': {'excludes':excludes,'packages':packages}}, 
    executables = [Executable('__init__.py',base=base)]
)

ed esegui lo script nella directory 'projectname'.

Ma se avvio l'applicazione ottengo ImportError: no module named 'submodule1.submodule11' da una finestra di errore.

Ed è vero: nel library.zip questo sottomodulo non esiste.

Cosa faccio di sbagliato?


Quindi, ho trovato la risposta: ogni modulo DEVE avere un file __init__.py . Ora compilo il mio progetto.





python-module