我有一个小项目,使用matplotlib显示芯片的晶圆图。我正在使用带有--onefile选项的PyInstaller将单文件Python(2.7)“编译”成可执行文件,以便公司的非Python用户可以在Windows中执行它。
可执行文件需要很长时间才能加载,最多可达15秒。作为一种解决方法,我删除了该程序的所有晶圆图绘制功能并构建了“Lite”版本。这个Lite版本运行在< 1s,应该如此。此外,Lite版本的.exe小85%(正如预期的那样)。
所以看起来Matplotlib的东西膨胀了exe并且需要很长时间才能加载。
这是我的思考过程:
如果我只导入我使用的模块而不是所有matplotlib.pyplot,我应该能够减小文件大小并减少加载时间。我假设import matplotlib.pyplot as pyplot
行正在导入一大堆我没有使用的额外内容,例如散点图。
这是我的问题: 我怎样才能导入我使用的matplotlib部分?
这是我的(相关)代码,删除了很多绒毛(如线条颜色)。另外,请忽略PEP8缺乏符合性 - 这是在我决定遵循之前编写的: - )
from __future__ import print_function
import math
import matplotlib.pyplot as pyplot
import matplotlib.patches
fig = pyplot.figure(1)
ax = fig.add_subplot(111, aspect='equal')
ax.axis([xAxisMin, xAxisMax, yAxisMin, yAxisMax])
die = matplotlib.patches.Rectangle(coords, dieX, dieY)
ax.add_patch(die)
arc = matplotlib.patches.Arc((0, 0),
width=exclDia, height=exclDia, angle=-90,
theta1=ang, theta2=-ang)
flat = matplotlib.lines.Line2D([-flatX, flatX],
[flatY, flatY])
# Extra code that actually adds everything to the figure
fig.show()
所以看起来我只是在使用:
matplotlib.pyplot.figure
matplotlib.patches.Rectangle
matplotlib.patches.Arc
matplotlib.lines.Line2D
然而,上面的那些不是matplotlib中的单个模块(据我所知) - 它们是父模块的类(补丁,行,pyplot),所以我不能只是`import matplotlib.patches.Arc'或者任何东西
因此。我的下一步是什么?