pyinstaller 如何不把依赖的 dll 打包到 exe 里?

2019-04-14 16:41:26 +08:00
 Marsss
写的一个基于 pyqt5 的 gui 工具,用 pyinstaller 打包,-F 打成一个 exe 有点大,50 多 M 启动略慢,用-D 参数的话除了 dll 还有一堆的 pyd,看起来太多太乱了,有没有办法打包成除了 dll,其他的打包为一个 exe ?
4154 次点击
所在节点    Python
6 条回复
iwtbauh
2019-04-14 17:00:30 +08:00
这是个伪需求

如果这些 dll 中的代码是程序运行需要的话,你把他放在外面,程序运行时操作系统也需要帮你把这些 dll 载入到内存里,和你是静态连接合并到可执行程序里需要浪费的时间是一样(甚至更长)的。

你既然要加快速度,则要从两个角度考虑问题

1. 程序启动的逻辑是否占用了太长的时间?如果是,考虑优化算法。但注意,除非你确定这就是性能瓶颈,否则不要优化。

2. 切换更快、更轻量的工具包
Marsss
2019-04-14 17:04:17 +08:00
@iwtbauh 受教了,确实本质目的是想程序启动更快,嗯,我试试 import 的时候,尽量指定需要用到的功能,谢谢指点。
youngxu
2019-04-14 17:06:41 +08:00
用 upx 减小打包大小
c
2019-04-14 17:23:36 +08:00
dll,pyd,单独打包,还真能加快加载速度。

-F 后,运行时,需要创建临时目录,然后把所有的文件解压进去,这个步骤文件太多,是会影响首屏加载速度的。

解决办法,就是修改 pyinstaller 源码,部分打包,
Marsss
2019-04-14 17:24:04 +08:00
upx 试过,可以减小一些,还不够理想。我再琢磨一下。
Marsss
2019-04-14 17:28:43 +08:00
@c 如何修改,大佬有写过博文么,求详细指点!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/555033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX