使用 Pyinstaller 将 Anaconda Python 转换为 EXE - 巨大的二进制文件和缓慢的执行

时间:2021-07-27 09:06:40

标签: python pyinstaller

我正在尝试将 Python 脚本转换为已编译的 exe,以允许我分发给多个客户端。我以前从未尝试过,所以我不确定分布式文件的大小等。

该脚本的示例(缩减)版本是:

import matplotlib.pyplot as plt


group_size=[10]
subgroup_size=[10,10,10,10,10,10,10,10,10]

a, b, c, d,e,f,g,h,i =[plt.cm.Blues,plt.cm.Blues,plt.cm.Blues, plt.cm.Reds,plt.cm.Reds,plt.cm.Reds, plt.cm.Greens,plt.cm.Greens,plt.cm.Greens]

fig, ax = plt.subplots()
ax.axis('equal')
mypie, _ = ax.pie(group_size, radius=3, colors= [a(0.90)],startangle=90 )
plt.setp( mypie, width=0.5, edgecolor='black')

# Second Ring (Inside)
mypie2, _ = ax.pie(subgroup_size, radius=3-0.5,  colors=[a(.9), b(0.2), c(0.2),d(.2),e(.2),f(.2),g(.9),h(.2),i(.2)],startangle=90,counterclock=False)
plt.setp( mypie2, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie3, _ = ax.pie(subgroup_size, radius=3-1.0,  colors=[a(.9), b(0.8), c(0.6),d(.2),e(.6),f(.2),g(.9),h(.7),i(.2)],startangle=90,counterclock=False)
plt.setp( mypie3, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie4, _ = ax.pie(subgroup_size, radius=3-1.5, colors=[a(.9), b(0.8), c(0.6),d(.2),e(.6),f(.4),g(.9),h(.7),i(.5)],startangle=90,counterclock=False)
plt.setp( mypie4, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie5, _ = ax.pie(subgroup_size, radius=3-2,  colors=[a(.9), b(0.8), c(0.6),d(.8),e(.6),f(.4),g(.9),h(.7),i(.5)],startangle=90,counterclock=False)
plt.setp( mypie5, width=0.5, edgecolor='black')
plt.margins(0,0)

mypie6, _ = ax.pie(subgroup_size, radius=0.5,  colors=[a(.999)],startangle=90,counterclock=False)
plt.setp( mypie6, width=0.9, edgecolor=a(0.999))
plt.margins(0,0)

# show it
plt.show()

它没有做任何聪明的事情 - 根据屏幕截图绘制嵌套饼图 enter image description here

使用带有“Pyinstaller --onefile --windowed --clean wheel.py”的 Pyinstaller 可以成功编译为可执行的 Windows 二进制文件,如第二个屏幕截图所示。 enter image description here

但是,二进制文件大小为 330Mb,加载/启动需要大约 20 秒。 (我很欣赏 exe 正在卷起 Python 解释器 - 所以大小可能就是它)

我的问题:

(1) 有没有“更好的”(即更小的二进制/更快的加载)方法来做到这一点? (我是不是错过了什么) (2) 是否有“更好”的方式来部署用 Python 编写的应用程序?

(我正在使用 Python,因为我广泛使用 matplotlib 来生成修改后的嵌套饼图,这已被证明是最可靠的)。遗憾的是,我无法让我的客户安装 Python —— 单个文件安装是入门门槛最低的。

收到的任何指点。

编辑: 因此,文件大小由 Python 解释器决定 - 创建相同的二进制大小,使用 TKinter 创建我自己的 GUI。

1 个答案:

答案 0 :(得分:0)

所以看起来“问题”正在编译成一个文件。每次执行exe文件时都会解压。因此,删除 --onefile 会加快执行速度。现在我需要一个安装程序文件!!

相关问题