PyInstaller生成超大exe文件求助:仅导入Flask模块却达319MB
解决PyInstaller打包Flask项目体积过大问题
问题描述
我的代码仅导入了Flask的三个模块:
from flask import Flask, request, jsonify
但用pyinstaller --onefile myFile.py打包后生成的可执行文件有319MB,而相同Conda环境、相同.spec配置的朋友打包我的代码只有9MB,PyInstaller还莫名包含了Matplotlib这类未用到的模块。
解决方案
创建干净的虚拟环境
Conda环境中大量无关模块可能导致PyInstaller误打包依赖。建议用venv创建仅包含Flask和PyInstaller的干净环境:python -m venv flask-env # Windows激活环境 flask-env\Scripts\activate # Linux/macOS激活环境 source flask-env/bin/activate pip install flask pyinstaller之后在该环境下重新打包。
手动排除无关模块
修改.spec文件,在Analysis部分添加exclude_modules参数,明确排除未使用的模块:a = Analysis( ['myFile.py'], pathex=[], binaries=[], datas=[], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=['matplotlib', 'numpy'], # 按需添加要排除的模块 win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, )执行
pyinstaller myFile.spec重新打包。排查依赖检测逻辑
运行pyinstaller --debug=imports myFile.py,查看PyInstaller实际检测到的依赖列表,定位被误引入的模块后针对性排除。清理缓存后打包
打包时添加--clean参数,清除过往缓存文件,避免旧依赖残留:pyinstaller --onefile --clean myFile.py
内容的提问来源于stack exchange,提问作者NoamK
相关产品推荐
相关产品推荐

