pyinstaller不能包含软件包

时间:2020-07-20 14:10:37

标签: python pyinstaller

我在激活后返回pip冻结的虚拟环境中运行python 2.7

future==0.17.1
lz4==2.1.6
pyparsing==2.3.1
PyQt4 @ file:///C:/.../PyQt4-4.11.4-cp27-cp27m-win_amd64.whl
xlrd==1.2.0

如果我在激活的虚拟环境中运行python并导入lz4,则会成功导入。

但是,当我尝试使用不带--windowed的pyinstaller(3.6版本)构建可执行文件时,从cmd运行exe文件会得到一个ImportError: No module named lz4

所以我想出于某种原因pyinstaller无法包含特定的软件包。

我尝试添加运行--hidden-import=lz4--paths="path_folder_to_lz4_inside_virtualenv"的pyinstaller命令,包括hiddenimports=['lz4'],文件上的.spec并在.spec上运行pyinstaller命令文件而不是.py文件(以及.py上的文件),包括

from PyInstaller.utils.hooks import collect_submodules

hidden_imports = collect_submodules('lz4')

.spec上并在.spec.py上运行pyinstaller命令,但是ImportError仍然存在。

我的机器上装有Windows10。请注意,这是从另一台机器上克隆的虚拟环境,在该机器上运行pyinstaller命令没有任何问题,唯一的区别是我安装了Windows 7,而PyQt并未安装wheel文件,但进行了复制PyQt4文件夹和sip.pyd从基础安装到环境软件包文件夹。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,请确定解决方案。

在先前的机器上没有问题,pyinstaller命令从主要的python 2.7安装版本运行pyinstaller。 (虚拟环境未安装pyinstaller)

问题出在机器上,pyinstaller安装在主要安装中(python 3),并在单独的virualenv中安装了主要python 2.7,我从此python 2.7安装中运行pyinstaller。

现在,我在此特定应用程序的virtualenv上安装了pyinstaller,然后从那里运行pyinstaller命令,它开始工作。