【发布时间】:2020-11-09 19:34:45
【问题描述】:
我在一个虚拟环境中运行 python 2.7,激活后运行 pip freeze 会返回
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 不能包含特定的包。
我尝试在.spec 文件上添加使用--hidden-import=lz4、--paths="path_folder_to_lz4_inside_virtualenv" 运行pyinstaller 命令,包括hiddenimports=['lz4'],,并在.spec 文件而不是.py 文件上运行pyinstaller 命令(和.py 也一样),包括
from PyInstaller.utils.hooks import collect_submodules
hidden_imports = collect_submodules('lz4')
在 .spec 上并在 .spec 和 .py 上运行 pyinstaller 命令,但 ImportError 仍然存在。
我的机器有 Windows 10。请注意,这是从另一台机器克隆的虚拟环境,其中 pyinstaller 命令运行没有任何问题,唯一的区别是我有 Windows 7 并且 PyQt 没有安装轮文件而是复制PyQt4 文件夹和 sip.pyd 从基础安装到环境包文件夹。
有什么建议吗?
【问题讨论】:
标签: python pyinstaller