解决pyinstaller打包exe文件过大的问题

问题

打包一个只有两个常用库的超短的代码,打包后的 exe 文件竟然有几百兆

解决

感觉应该是环境问题,将没用的包打包进去了,因此建立工程环境只安装需要的包,有点怀念 NodeJS的 package.json

# 安装pipenv
pip install pipenv

#建立虚拟环境
pipenv install
#进入虚拟环境(上一步可省略,因为没有虚拟环境的话会自动建立一个)
pipenv shell
# 随时查看安装的包
pip list
#安装模块
pip install .py里安装的模块
#打包的模块也要安装,否则会调用原有的库依旧会关联很多无用库
pip install pyinstaller
# 打包
pyinstaller -F .py文件路径
# 退出虚拟环境
exit
# 删除虚拟环境
pipenv ––rm

踩坑 pandas、openpyxl

pyinstaller 打包指定模块 hidden import

  • 方法一
    命令行中携带参数
# 有pandas的打包方式,否则会缺少依赖包
pyinstaller -F -w --hidden-import pandas --hidden-import="pandas._libs.tslibs.timedeltas" --hidden-import="pandas._libs.tslibs.np_datetime" --hidden-import="pandas._libs.tslibs.nattype" --hidden-import="pandas._libs.skiplist" .py文件路径

pyinstaller main.py --hidden-import openpyxl.cell._writer
  • 方法二
    PyInstaller\hooks 的目录下新建文件 hook-pandas.py
hiddenimports=[
    #all your previous hidden imports
    'pandas', 'pandas._libs.tslibs.timedeltas', 'pandas._libs.tslibs.np_datetime', 'pandas._libs.tslibs.nattype', 'pandas._libs.skiplist'
]

然后执行 pyinstaller -F .py文件路径

  • 方法三
    pyinstaller .py文件 打包时会自动生成 XX.spec ,类似NodeJS的 package.json,新建或者修改spec文件中的 hiddenimports,然后pyinstaller .spec文件 打包
a = Analysis(['main.py'],
            pathex=['/project-folder'],
            binaries=[],
            datas=[],
            hiddenimports=[
				'pandas', 'pandas._libs.tslibs.timedeltas', 'pandas._libs.tslibs.np_datetime', 'pandas._libs.tslibs.nattype', 'pandas._libs.skiplist',
				'openpyxl','xlrd','xlswriter','openpyxl.cell._writer'],
            hookspath=[],
            runtime_hooks=[],
            excludes=[],
            cipher=block_cipher)

总结

使用 Linux 时安装环境时很小心,在win下有点放飞自我不受控制了,现实教我做人


参考文章:

  1. pipenv的安装和使用
  2. pyinstaller打包后程序体积太大,如何解决?
  3. pyinstaller踩坑无极限-No module named ‘pandas._libs.tslibs.timedeltas
  4. pyinstaller深入使用,打包指定模块,打包静态文件
  5. Pyinstaller 中 pandas出错问题的解决(详细)
  6. 如何使得 python 脚本 不一闪而过
  7. openpyxl not found in exe file made with pyinstaller
  8. 使用Spec文件配置编译
  9. pyinstaller spec文件详解
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值