Skip to content

Windows 上冷启动很慢,应该跟打包成单一可执行文件有关 #47

@voltage-poppy

Description

@voltage-poppy

以下论述引用自 怎么样打包 pyqt 应用才是最佳方案?或者说 pyqt 怎样的发布方式最优?- 韦易笑的回答 - 知乎

很多人用 PyInstaller 喜欢加一个 -F 参数,打包成一个单文件......
Image
这样的单文件看起来似乎很爽,其实他们不知道,这其实是一个自解压程序,每次运行时需要把自己解压到 temp 目录,然后再去用实际的方式运行一遍解压出来的东西......
Process Explorer 把雷达图标拖动到 pyqt_hello.exe 的窗口上,可以看到有两个 pyqt_hello.exe 的文件,外面那个是你打包出来的,里面那个才是真正的程序(虽然可执行都是一个),看看它下面依赖的 python310.dll 是在哪里?这不就是一个临时解压出来的目录么:
Image
......这就是 PyInstaller 打包出来的 30MB 的程序,每次运行都要临时解压出 71MB 的文件,运行完又删除了,那么如果打包出来的可执行有 100MB,每次运行都要释放出 200-300 MB 的东西出来,所以为什么 PyInstaller 出来的单文件运行那么慢的原因除了每次要解压外,还有杀毒软件碰到新的二进制都要扫描一遍,你每次新增一堆 .dll , .pyd, .exe,每次都要扫描,不慢可能么?

如果上面引述的是真的,

请求是否可以对 Windows 平台不打包成单一可执行文件呢?或者在单文件 release 之外提供非单文件的目录压缩包 release ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions