【发布时间】:2015-08-04 02:46:01
【问题描述】:
我有一个模块/包结构,我在其中使用命名空间包,我有多个用户制作的库,我将它们保存在单独的存储库中,并且它们具有相当通用的名称,例如 db、io、utils 等。为了避免与其他包冲突,我有一个名为 acme 的顶级/命名空间包,即我的包是 acme.io、acme.db、acme.utils 等。为了使这项工作,所有 acme 文件夹中的 __init__.py 具有以下几行
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
这在运行从 python 中使用这些包的软件时效果很好。
然后我尝试使用 pyinstaller 制作 EXE。 pyinstaller 只找到其中一个包。我尝试将 pathex 设置为每个库所在的文件夹:
a = Analysis(['.\\src\\myPgogram.py'],
pathex=['C:\\Data\\python\\myProgram', 'C:\\Data\python\\dbrepo', 'C:\\Data\\python\\utilsrepo', 'C:\\Data\\python\\iorepo'],
hiddenimports=['acme', 'acme.io', 'acme.utils', 'acme.db'],
hookspath=None,
runtime_hooks=None)
在dbrepo、iorepo和utilsrepo文件夹中有一个名为acme的文件夹,里面有上面提到的__init__.py文件和对应的包,即db、utils和io,里面又多了一个__init__.py文件。
但是 pyinstaller 只能找到 acme 和 acme.db 包。或者它只查找 pathex 变量中首先列出路径的包。
有什么提示可以让我完成这项工作吗?
谢谢
【问题讨论】:
标签: python namespaces package pyinstaller namespace-package