使用PyInstaller打包Python文件为exe时出现__version__未定义报错
报错原因
这个NameError: name '__version__' is not defined报错触发根源是:
__version__是pyppeteer包内置的版本标识变量,正常运行Python脚本时会自动从包的安装元数据中读取- PyInstaller默认不会打包第三方依赖的元数据文件,导致打包后的可执行文件运行时无法加载到pyppeteer的版本信息,触发变量未定义错误
可行解决方法
方法1:硬编码版本号(修改源码,操作简单)
- 先执行命令查看本地安装的pyppeteer版本:
pip show pyppeteer
- 找到Python安装路径下的
Lib/site-packages/pyppeteer/__init__.py文件,在文件最顶部添加一行代码,将版本号替换为你上一步查询到的实际版本:
__version__ = "0.2.5"
- 重新执行PyInstaller打包命令即可。
方法2:添加PyInstaller钩子(不修改源码,更规范)
- 在你的Python项目根目录新建名为
hook-pyppeteer.py的文件,写入以下内容:
from PyInstaller.utils.hooks import copy_metadata datas = copy_metadata('pyppeteer')
- 执行打包命令时新增
--additional-hooks-dir=.参数,示例:
pyinstaller --additional-hooks-dir=. your_script.py
该参数会让PyInstaller自动打包pyppeteer的元数据文件,不需要修改依赖源码即可解决问题。
内容的提问来源于stack exchange,提问作者Ayo
相关产品推荐
相关产品推荐

