gpt4 book ai didi

python - 带有命名空间包的 pyinstaller

转载 作者:行者123 更新时间:2023-12-04 16:52:13 25 4
gpt4 key购买 nike

我有一个模块/包结构,我在其中使用命名空间包,我有多个用户创建的库,我保存在单独的存储库中,并且它们具有相当通用的名称,例如 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 变量中首先列出的包。

我如何使这项工作有任何提示?

谢谢

最佳答案

我只是有同样的问题。查了一下这个:http://pythonhosted.org/PyInstaller/#extending-the-path并添加了一些 --paths到我的构建批处理文件调用。

这类似于:

@echo off
echo ========= %~n0 =========

set pyfile=scriptName.py
set pypath=C:\Python27\Scripts
set buildpath=%temp%
set distpath=%~dp0

%pypath%\pyinstaller.exe --onefile -y %~dp0%pyfile% --distpath=%distpath% --workpath=%buildpath% --specpath=%buildpath% --noupx --paths=D:\Tools\dev\python --paths=D:\somepath

干杯!

关于python - 带有命名空间包的 pyinstaller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com