python - 减少 py2exe 分布大小,同时包含一些 numpy 函数

标签 python python-2.7 numpy py2exe software-distribution

我有一个程序目前依赖于 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/

相关文章:

python - Matplotlib 错误 : LaTeX was not able to process the following string: 'lp'

python - 如何系统地识别 Python 在其可访问的包/模块树中的依赖关系?

python - 在 tensorflow 中实现简单的线性代数运算

python - python中列表列表的移动平均值

python - Google Colab 文本换行辅助

python - Matplotlib "pick_event"无法在带有 FigureCanvasTkAgg 的嵌入式图形中工作

python - 什么是用户定制

python - 为什么带有 nltk 的 Stanford 解析器不能正确解析一个句子?

python - 如何以线程安全的方式快速更新列表列表?

python - 如何创建一个 numpy 数组,其元素是其他 numpy 数组对象?