使用py2exe处理动态导入

时间:2012-11-29 15:41:18

标签: python py2exe dynamic-import

使用py2exe为我的应用程序准备.exe时遇到问题。 这个问题的根源是我为使用类而创建的以下函数 一个动态定义的模块。

def of_import(module, classname, country = None):
    '''
    Returns country specific class found in country module
    '''
    if country is None:
       country = CONF.get('simulation', 'country')
    _temp = __import__(country + '.' + module, 
                       globals = globals(), 
                       locals = locals(), 
                       fromlist = [classname], 
                       level=-1)
    return getattr(_temp, classname, None)

当我尝试使用以下方法加载某个类时:

self.InputTable = of_import('model.data', 'InputTable')

运行.exe时出现以下错误:

File "core\utils.pyc", line 900, in of_import
ImportError: No module named france.model.data

我应该确切地说france.model.data.py确实存在。

处理这个问题的适当方法是什么?

此处的信息是设置文件的链接:https://github.com/openfisca/openfisca/blob/dev/src/setup_x64.py

1 个答案:

答案 0 :(得分:3)

我有类似的设置

确保在py2exe的“packages”部分添加动态模块

setup(windows=[{
                "script" : "openFisca.pyw"
                }], 
      options={"py2exe" : {"includes" : ["sip", "encodings.*", "numpy.*"],
                           "packages": ["france","tunisia"],
                           "dist_dir": dist_dir,
                           "bundle_files":3,
                           "dll_excludes": ["MSVCP90.dll"]
                           }}, 
      data_files=data_files)