You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller编译含Bokeh的Python项目后启动报错PackageNotFoundError

解决PyInstaller打包Bokeh 3.x时出现importlib.metadata.PackageNotFoundError: bokeh的问题

问题原因

Bokeh 3.x版本在运行过程中会通过importlib.metadata读取自身的包元数据(如版本信息),但PyInstaller默认不会自动收集这些元数据文件,导致打包后的可执行文件无法找到对应的信息,触发报错。

解决方案

方法一:使用PyInstaller命令行参数强制收集Bokeh数据

直接在打包命令中添加--collect-data bokeh参数,让PyInstaller完整收集Bokeh的所有数据文件(包括元数据):

pyinstaller --collect-data bokeh your_script.py

替换your_script.py为你的项目主脚本文件名。

方法二:通过.spec文件配置数据收集

如果已经生成了PyInstaller的.spec文件,修改其中的datas配置项,添加Bokeh的数据收集逻辑:

from PyInstaller.utils.hooks import collect_data_files

# 原有配置保留,添加Bokeh数据收集
datas = []
datas += collect_data_files('bokeh')

# 其余配置(如a、pyz、exe等部分保持不变)

修改完成后,运行以下命令打包:

pyinstaller your_script.spec

额外注意事项

  • 确保打包使用的Python环境和开发运行时的环境完全一致,避免混用pip和conda安装的包导致的路径问题
  • 如果使用conda环境,需确保PyInstaller也是通过conda安装的(conda install pyinstaller),不要使用pip安装的PyInstaller处理conda环境的包

内容的提问来源于stack exchange,提问作者srad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:55:14