使用pyinstaller和numpy的可执行文件的大小 [英] size of executable using pyinstaller and numpy

查看:562
本文介绍了使用pyinstaller和numpy的可执行文件的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用numpy和Qt编写了一个简短程序main.py:

I wrote a short program main.py using numpy and Qt:

from PyQt5 import QtWidgets
import numpy as np
import sys

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = QtWidgets.QTextEdit('hello')
    w.show()
    sys.exit(app.exec_())

当我使用pyinstaller --windowed main.py时,生成的dist文件夹的大小为390MB.

When I use pyinstaller --windowed main.py the resulting dist folder has a size of 390MB.

如果我删除import numpy as np,则生成的dist文件夹只有70MB.

If I remove import numpy as np the resulting dist folder is only 70MB.

有什么方法可以在仍然使用numpy的同时减小大小吗?也许只包括我真正使用的dlls?

Is there any way to reduce the size while still using numpy? Maybe by only including the dlls I really use?

推荐答案

感谢balletpiraat用户,我找到了解决方案.

Thanks to the user balletpiraat I found a solution.

使用以下命令安装numpy: conda install -c conda-forge numpy

Install numpy with: conda install -c conda-forge numpy

为了测试这一点,我创建了两个anaconda环境.使用以下命令创建环境"normalnumpy":

To test this I created two anaconda environments. Environment "normalnumpy" was created with:

conda create -n normalnumpy python=3.7
activate normalnumpy
conda install numpy
pip install pyinstaller

导致:

altgraph                  0.16.1                    <pip>
blas                      1.0                         mkl
certifi                   2018.10.15               py37_0
future                    0.16.0                    <pip>
icc_rt                    2017.0.4             h97af966_0
intel-openmp              2019.0                      118
macholib                  1.11                      <pip>
mkl                       2019.0                      118
mkl_fft                   1.0.6            py37hdbbee80_0
mkl_random                1.0.1            py37h77b88f5_1
numpy                     1.15.2           py37ha559c80_0
numpy-base                1.15.2           py37h8128ebf_0
pefile                    2018.8.8                  <pip>
pip                       10.0.1                   py37_0
PyInstaller               3.4                       <pip>
python                    3.7.0                hea74fb7_0
pywin32-ctypes            0.2.0                     <pip>
setuptools                40.4.3                   py37_0
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.15.26706          h3a45250_0
wheel                     0.32.1                   py37_0
wincertstore              0.2                      py37_0

创建环境"extranumpy"的方法是:

Environment "extranumpy" was created with:

conda create -n extranumpy python=3.7
activate extranumpy
conda install -c conda-forge numpy
pip install pyinstaller

导致:

altgraph                  0.16.1                    <pip>
blas                      1.1                    openblas    conda-forge
certifi                   2018.10.15            py37_1000    conda-forge
future                    0.16.0                    <pip>
libflang                  5.0.0             vc14_20180208  [vc14]  conda-forge
llvm-meta                 5.0.0                         0    conda-forge
macholib                  1.11                      <pip>
numpy                     1.15.2          py37_blas_openblash8d851b4_1  [blas_openblas]  conda-forge
openblas                  0.2.20                   vc14_8  [vc14]  conda-forge
openmp                    5.0.0                    vc14_1  [vc14]  conda-forge
pefile                    2018.8.8                  <pip>
pip                       10.0.1                   py37_0
PyInstaller               3.4                       <pip>
python                    3.7.0                hea74fb7_0
pywin32-ctypes            0.2.0                     <pip>
setuptools                40.4.3                   py37_0
vc                        14                            0    conda-forge
vs2015_runtime            14.15.26706          h3a45250_0
wheel                     0.32.1                   py37_0
wincertstore              0.2                      py37_0

我使用"main.py"测试了两种环境:

I tested both environments with "main.py":

import numpy as np
if __name__ == '__main__':
    test = np.array([42])
    print(test)

pyinstaller --onefile main.py

"normalnumpy"可执行文件为228MB,"extranumpy"可执行文件为10MB.

the "normalnumpy" executable is 228MB, the "extranumpy" executable is 10MB.

这篇关于使用pyinstaller和numpy的可执行文件的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆