我在激活后返回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从基础安装到环境软件包文件夹。
有什么建议吗?
答案 0 :(得分:0)
如果有人遇到同样的问题,请确定解决方案。
在先前的机器上没有问题,pyinstaller命令从主要的python 2.7安装版本运行pyinstaller。 (虚拟环境未安装pyinstaller)
问题出在机器上,pyinstaller安装在主要安装中(python 3),并在单独的virualenv中安装了主要python 2.7,我从此python 2.7安装中运行pyinstaller。
现在,我在此特定应用程序的virtualenv上安装了pyinstaller,然后从那里运行pyinstaller命令,它开始工作。