【发布时间】:2010-08-19 20:31:10
【问题描述】:
我有一个 Python 应用程序,它在运行时动态加载 Python 模块(使用 __import__)。要加载的模块位于名为“plugins”的包中(即名为plugins 和__init__.py 等的子文件夹)。从 python 解释器运行一切正常,即使使用 py2exe 编译为 Windows 二进制文件。
我尝试从中构建一个 OSX 应用程序,它成功了,但是在运行 .app 时我收到 ImportError: 'no module named plugins.xxxx'。
我很确定我为 py2app 提供了正确的选项('includes': [...]、'packages':['plugins'],与我为 py2exe 所做的相同),因为当我浏览 .app 内容时,我会在一个文件夹中看到所有插件模块Contents/Resources/lib/python2.5/plugins/。
那么,为什么应用找不到我的模块(一定是路径问题)?
编辑:
我找到了一种让它工作的方法,但这不是一个好的解决方案:
当我打印 Python 搜索模块的路径时(使用 print sys.path),我注意到文件夹 Contents/Resources/lib/python2.5/plugins/ 没有列出。不过Contents/Resources/这个文件夹是,所以我把plugins文件夹移到Contents/Resources文件夹下。现在插件找到了。但我仍然对这种丑陋的手动 hack 不满意。
【问题讨论】: