我有一个 Python 应用程序,它在运行时动态加载 python 模块(使用__import__
)。要加载的模块位于一个名为“ plugins
”的包中(即plugins
用__init__.py
etc 调用的子文件夹)。从 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
夹中。现在插件找到了。但我仍然对这种丑陋的手动破解不满意。