我在一个虚拟环境中运行python 2.7,在该环境中激活pip后运行它会返回
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,那么它就成功导入了。
但是,当我尝试用pyinstaller(3.6版本(构建不带--windowed
的可执行文件时,从cmd运行exe文件会得到ImportError: No module named lz4
。
因此,我想出于某种原因,pyinstaller无法包含特定的软件包。
我已经尝试添加在.spec
文件上使用--hidden-import=lz4
、--paths="path_folder_to_lz4_inside_virtualenv"
(包括hiddenimports=['lz4'],
(运行pyinstaller命令,并在.spec
文件而不是.py
文件(以及在.py
上(运行pyinstaller命令,包括
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从基本安装复制到environment-packages文件夹。
有什么建议吗?
确定一个解决方案,以防有人遇到同样的问题。
在以前的机器中,如果没有问题,pyinstaller命令会从python 2.7的主安装中运行pyinstaller。(虚拟环境没有安装pyinstaller(
在机器中,问题是,pyinstaller安装在主安装(python 3(中,并安装在一个单独的viralenv中,带有主python 2.7安装,我从这个python 2.7安装中运行pyinstaller。
现在,我在这个特定应用程序的virtualenv上安装了pyinstaller,并从那里运行pyinstaller命令,它就工作了。