【问题标题】:pyinstaller cannot include packagepyinstaller 不能包含包
【发布时间】: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


【解决方案1】:

好的解决方案,以防有人遇到同样的问题。

在之前的机器上,如果没有问题,pyinstaller 命令从 python 2.7 的主 python 安装运行 pyinstaller。 (虚拟环境没有安装pyinstaller)

问题出在机器上,pyinstaller 安装在主安装(python 3)和一个单独的 virualenv 中,主安装 python 2.7,我从这个 python 2.7 安装运行 pyinstaller。

现在我在 virtualenv 上为这个特定的应用程序安装了 pyinstaller,我从那里运行 pyinstaller 命令,它工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2023-01-18
    • 2020-03-23
    • 1970-01-01
    • 2020-11-08
    • 2012-07-04
    相关资源
    最近更新 更多