打包一个只有两个常用库的超短的代码,打包后的 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
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文件路径
- 方法二
在 PyInstallerhooks 的目录下新建文件 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文件路径
总结使用 Linux 时安装环境时很小心,在win下有点放飞自我不受控制了,现实教我做人
参考文章:
- pipenv的安装和使用
- pyinstaller打包后程序体积太大,如何解决?
- pyinstaller踩坑无极限-No module named ‘pandas._libs.tslibs.timedeltas
- pyinstaller深入使用,打包指定模块,打包静态文件
- Pyinstaller 中 pandas出错问题的解决(详细)
- 如何使得 python 脚本 不一闪而过



