【发布时间】:2018-05-21 09:24:54
【问题描述】:
我有一个超过 40MB 的简单 pandas pyinstaller exe。
我的 exe 示例:
import collections
import csv
import selenium
import pandas
print('hi')
40MB 以上似乎有点过头了。
如何尽可能减少这种情况?
一种方法:
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 不检测 pandas。
添加:
hiddenimports = ['pandas._libs.tslibs.timedeltas']
To: C:\Users\<NAME>\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyInstaller\hooks
当使用多个可执行文件时,可能的solution 可能是将每个可执行文件链接到单独的文件夹或包含所有导入的可执行文件。
【问题讨论】:
-
如果您删除依赖项,exe 将无法运行您的脚本,还是我遗漏了什么?
-
@FlorentB。 Pyinstaller 正在打包其他不需要的东西。另外,那个exe是40mb?我尝试对其进行UPX,但对我来说并没有太大变化。一定是做错了。
-
当我执行
pyinstaller --onefile test.py(test.py 包含您的示例)时,我得到一个大约 5mb 的可执行文件。 -
尝试使用 --onedir 选项而不是 --onefile,看看 pyinstaller 在 dist 文件夹中放了什么。
标签: python pandas selenium selenium-webdriver pyinstaller