我有一个程序目前依赖于 numpy
,我一直致力于用 py2exe
进行转换。我的问题是,即使使用诸如
from numpy import array
print array(1)
只使用函数 numpy.array
,我找不到任何方法来排除 numpy
包中看似不必要的部分,例如 numpy.linalg
在由 py2exe
创建的发行版中。这导致分发的大小超过 80MB(压缩后为 30MB)。文件夹中有一个名为 numpy.linalg._umath_linalg.pyd
的文件,大小为 34MB,另一个名为 numpy.linalg.lapack_lite.pyd
的文件大小为 18MB - 这些真的需要吗到那里?!如果简单地删除 .exe
则不会运行。
我的问题是,如何减小生成的分布大小?我知道 py2exe
有替代方案,如果我可以消除对 numpy 的依赖
我不会有这个问题,但我想坚持使用这两个。
以下安装脚本是我正在使用的,产生了 87MB 的分布。
from distutils.core import setup
import py2exe, sys
import shutil
sys.argv.append('py2exe') # No need to type in command line.
py2exe_options = {
# 'excludes': ['numpy.linalg'], # Stopped the resulting exe from running
'compressed': True, # Saves 5MB, is this at the cost of some speed?
'optimize': 1 # I don't really understand what this does.
}
setup(
windows=[{'script': 'main.pyw'}],
options={'py2exe': py2exe_options},
)
shutil.rmtree('build', ignore_errors=True) # Remove the build folder
最佳答案
如果有人有任何进一步的建议,我想在这里提出!但这是我到目前为止所做的。
通过使用从 here 下载的“未优化”二进制文件重新安装 numpy
,我已经设法将发行版的大小从 87MB 减少到 34MB。 .我相信这在进行线性代数运算时可能会运行得更慢,但它对我处理数组来说效果很好。
更新
通过更改 setup.py
脚本中的 py2exe 选项,我现在已将我的发行版减少到 28MB。
import distutils.core import setup
py2exe_options = {
'compressed': True,
'optimize': 1, # 2 does not work.
'excludes': ['pydoc', 'doctest', 'pdb', 'inspect', 'pyreadline',
'locale', 'optparse', 'pickle', 'calendar']
}
setup(windows=['main.py'], options={'py2exe':py2exe_options})
关于python - 减少 py2exe 分布大小,同时包含一些 numpy 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216410/