带有命名空间包的pyinstaller

2024-06-28 18:46:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用名称空间包的模块/包结构,我有多个用户创建的库,这些库保存在不同的存储库中,它们有相当通用的名称,如db、io、utils等等。为了避免与其他包冲突,我有一个名为acme的顶级/命名空间包,即我的包是顶点.io, 顶点.db, 顶点.utils等等。为了实现这一点,所有acme文件夹中的uinit_uy.py包含以下行

from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

当运行使用python中的这些包的软件时,这种方法非常有效。在

但是我试着用pyinstaller制作一个EXE。pyinstaller只找到其中一个包。pathex试图将这些库驻留在以下位置:

^{pr2}$

在dbrepo、iorepo和utilsrepo文件夹中,有一个名为acme的文件夹,其中包含上述的yu init_u.py文件和相应的包,即db、utils和io,其中又有一个u init_uuy文件。在

但是pyinstaller只找到acme和顶点.db包裹。或者只查找路径在pathex变量中首先列出的包。在

有什么建议可以让我做这个吗?在

谢谢


Tags: 文件pathpyio文件夹名称dbinit
2条回答

我也有同样的问题。查找这个: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

干杯!在

Pyinstaller 2.1不支持命名空间包,它将在以后的版本中受支持。在

我使用的解决方案是,在我的构建脚本中,临时将libs复制到一个公共acme文件夹中,并将此路径添加到分析中的pathex。在*nix系统上,可以创建符号链接,而不是复制回购。感谢Pyinstaller团队的hartmutgoebel澄清了这个问题。在

相关问题 更多 >