我有一个超过40MB的简单tomcat pyinstaller exe。
我的exe示例:
import collections import csv import selenium import pandas print('hi')
40MB +似乎有点矫kill过正。
如何尽可能减少这种情况?
一种方法:
pyinstaller --onefile --exclude matplotlib --exclude scipy --exclude pandas --exclude numpy.py
但是考虑到排除列表的大小,这是不切实际的。
如何为pyinstaller选择一个文件夹,以从中获取模块并排除其他所有内容,所以我的应用程序可能很小?
规格文件:
a = Analysis(['123.py'], pathex=['C:\\Users\\AA\\ZZ'], binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, name='123', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True )
这也值得一提。默认情况下,Pyinstaller不会检测到熊猫。
加:
hiddenimports = ['pandas._libs.tslibs.timedeltas'] To: C:\Users\<NAME>\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyInstaller\hooks
使用多个可执行文件时,可能的解决方案是将每个可执行文件链接到一个单独的文件夹或包含所有导入文件的可执行文件。
尝试使用virtualenv设置环境,然后仅在其中安装所需的库
有关使用虚拟环境的一些详细信息,请参见:https://virtualenv.pypa.io/en/stable/