Anaconda Python 到带有 Pyinstaller 的 EXE - 巨大的二进制文件和缓慢的执行
Anaconda Python to EXE with Pyinstaller - huge binary and slow execution
我正在尝试将 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()
它没有做任何聪明的事情 - 根据屏幕截图绘制嵌套饼图
将 Pyinstaller 与“Pyinstaller --onefile --windowed --clean wheel.py”一起使用可以成功编译为可执行文件 Windows 二进制文件,如第二个屏幕截图所示。
但是,二进制文件的大小为 330Mb,加载/启动大约需要 20 秒。 (我很欣赏 exe 正在滚动 Python 解释器 - 所以大小可能就是它的大小)
我的问题:
(1) 是否有“更好的”(即更小的二进制文件/更快的加载)方法来做到这一点? (我错过了什么吗)
(2) 是否有一种“更好”的方式来部署用 Python 编写的应用程序?
(我正在使用 Python,因为我广泛使用 matplotlib 来生成修改后的嵌套饼图,这已被证明是最可靠的)。遗憾的是,我无法让我的客户安装 Python -- 单个文件安装是最低的进入门槛。
大大收到任何指点。
编辑:
所以它表明文件大小由 Python 解释器决定 - 创建相同的二进制大小使用 TKinter 创建我自己的 GUI。
看来“问题”正在编译成一个文件。每次执行 exe 文件时都会解压缩。因此,删除 --onefile 可以加快执行速度。现在我需要一个安装程序文件!!
我正在尝试将 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()
它没有做任何聪明的事情 - 根据屏幕截图绘制嵌套饼图
将 Pyinstaller 与“Pyinstaller --onefile --windowed --clean wheel.py”一起使用可以成功编译为可执行文件 Windows 二进制文件,如第二个屏幕截图所示。
但是,二进制文件的大小为 330Mb,加载/启动大约需要 20 秒。 (我很欣赏 exe 正在滚动 Python 解释器 - 所以大小可能就是它的大小)
我的问题:
(1) 是否有“更好的”(即更小的二进制文件/更快的加载)方法来做到这一点? (我错过了什么吗) (2) 是否有一种“更好”的方式来部署用 Python 编写的应用程序?
(我正在使用 Python,因为我广泛使用 matplotlib 来生成修改后的嵌套饼图,这已被证明是最可靠的)。遗憾的是,我无法让我的客户安装 Python -- 单个文件安装是最低的进入门槛。
大大收到任何指点。
编辑: 所以它表明文件大小由 Python 解释器决定 - 创建相同的二进制大小使用 TKinter 创建我自己的 GUI。
看来“问题”正在编译成一个文件。每次执行 exe 文件时都会解压缩。因此,删除 --onefile 可以加快执行速度。现在我需要一个安装程序文件!!