Jon*_*nas 3 python numpy pyinstaller
我main.py使用 numpy 和 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_())
Run Code Online (Sandbox Code Playgroud)
当我使用pyinstaller --windowed main.py生成的dist文件夹时,它的大小为 390MB。
如果我删除import numpy as np生成的dist文件夹只有 70MB。
有什么办法可以在仍然使用 numpy 的同时减小尺寸?也许只包括dlls我真正使用的?
感谢用户 balletpiraat 我找到了一个解决方案。
安装 numpy: conda install -c conda-forge numpy
为了测试这一点,我创建了两个 anaconda 环境。环境“normalnumpy”是用以下方法创建的:
conda create -n normalnumpy python=3.7
activate normalnumpy
conda install numpy
pip install pyinstaller
Run Code Online (Sandbox Code Playgroud)
导致:
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
Run Code Online (Sandbox Code Playgroud)
环境“extranumpy”是通过以下方式创建的:
conda create -n extranumpy python=3.7
activate extranumpy
conda install -c conda-forge numpy
pip install pyinstaller
Run Code Online (Sandbox Code Playgroud)
导致:
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
Run Code Online (Sandbox Code Playgroud)
我用“main.py”测试了两种环境:
import numpy as np
if __name__ == '__main__':
test = np.array([42])
print(test)
Run Code Online (Sandbox Code Playgroud)
和
pyinstaller --onefile main.py
Run Code Online (Sandbox Code Playgroud)
“normalnumpy”可执行文件为 228MB,“extranumpy”可执行文件为 10MB。
| 归档时间: |
|
| 查看次数: |
9859 次 |
| 最近记录: |