【Problem】pyinstaller 安装 numpy, pandas, scipy 导致文件过大
编辑
64
2020-12-01
问题描述
python 包里引用了关于科学计算的几个包,导致生成的软件体积十分庞大
复现步骤
1.创建虚拟环境
2.在虚拟环境下安装所有依赖包
3.在虚拟环境下安装 pyinstaller (否则执行 pyinstaller 生成的文件是依赖于Anaconda的包,十分臃肿)
4.在虚拟环境下执行 pyinstaller demo.py
但是当,环境包里面包含 numpy、pandas 或者 scipy 的时候,即使采取了以上措施,生成的包依然十分臃肿
截图
解决方案
方案1: 放弃 Anaconda,用 Miniconda 作为替代
Miniconda 是 Anaconda 的精简版,舍去了很多不必要的依赖库
方案2: 使用 conda 创建虚拟环境,在 conda 虚拟环境安装 numpy
的时候使用 conda-forge
conda create -n demo python=3.7
activate demo
conda install -c conda-forge numpy
pip install pyinstaller
此种方法不知为何,我生成的文件总大小还是500+MB,关于此方法的具体步骤可见:StackOverflow - size of executable using pyinstaller and numpy,网上大部分介绍的解决方法都是此种方法。
方案3:使用 conda 安装 nomkl*
conda install nomkl
conda create -n demo python nomkl
conda install -n demo numpy
也可以切换到 demo 虚拟环境(
activate demo
),执行pip install numpy
pip install pyinstaller
此种方法,在 「win10」平台测试成功,详请「How to install scipy without mkl」
conda install nomkl numpy(上面的步骤据说可以用这个替代,未验证)
一些补充
关于 numpy 导致文件过大的讨论:「https://github.com/conda-forge/numpy-feedstock/issues/108」
其他的经过测试的不可靠方案:
修改.spec,排除mkl开头的文件,会导致生成的文件无法正常运行,缺失支持文件
- 0
- 0
-
赞助
微信 -
分享