【发布时间】:2012-11-29 15:41:18
【问题描述】:
我在使用 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
【问题讨论】:
-
两个问题:
france.model.data.py模块文件是否存在,如果存在,此代码是否仅在您使用py2exe编译后才会失败? -
相关代码将是您的
setup.py用于 py2exe。我们能看到吗?它需要包含模块,因为 py2exe 不会自动发现它们 -
我编辑了问题以回答@martineau 问题
-
添加有问题的链接以回答@jdi
-
由于该模块确实存在,这听起来像是搜索路径问题。尝试将
PY2EXE_VERBOSE环境变量设置为 1 或 2,如 here 所述,以进一步诊断问题。
标签: python py2exe dynamic-import