2014-09-19 100 views
3

我想使用cx_freeze編譯帶有子模塊的Python 3.3模塊。cx_freeze和導入模塊

所以,我的DIR strucuture是:

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

__init__.py我導入

from submodule1 import bootstrap 

,並從引導

import submodule1.submodule11.script2 

如果我運行init文件,什麼是好,並且子模塊導入的腳本正確執行。

當我編譯它,我用這個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)] 
) 

,並在「項目名稱」目錄運行該腳本。

但是,如果我啓動應用程序,我會從錯誤對話框中獲得ImportError: no module named 'submodule1.submodule11'

這是真的:在library.zip中這個子模塊不存在。

我該怎麼做?

+0

你能顯示凍結它的輸出嗎?它會很長,放在一個pastebin中。 – 2014-09-19 22:04:21

回答

2

所以,我找到了答案:每個模塊必須有一個__init__.py文件。現在我編譯我的項目。

+2

你能解釋更多嗎? – MLSC 2015-12-21 11:05:03