解决 TensorBoard 启动时 “No module named 'pkg_resources'” 问题

问题现象

在 Pointcept 项目中,启动 TensorBoard 查看训练日志时出现如下错误:

java 复制代码
tensorboard.exe --logdir exp/default
Traceback (most recent call last):
  ...
  from tensorboard import default
  File "...\tensorboard\default.py", line 30, in <module>
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'

环境信息

  • 操作系统:Windows
  • Python 版本:3.10.18
  • 包管理器:uv(也可用 pip
  • 虚拟环境:.venv
  • TensorBoard 版本:2.20.0

排查过程

1. 确认 setuptools 已安装

复制代码
uv pip list | findstr setuptools
setuptools                82.0.1

2. 测试导入 pkg_resources

vbnet 复制代码
python -c "import pkg_resources; print('OK')"
ModuleNotFoundError: No module named 'pkg_resources'

3. 检查虚拟环境中的 setuptools 目录

vbnet 复制代码
Get-ChildItem .venv\Lib\site-packages\setuptools

发现目录存在,但没有顶层的 pkg_resources 模块 。进一步查看 _vendor 子目录:

vbnet 复制代码
Get-ChildItem .venv\Lib\site-packages\setuptools_vendor

其中包含大量第三方依赖,但依然没有 pkg_resources 模块。

4. 强制重装 setuptools 无效

scss 复制代码
uv pip install --force-reinstall --no-cache-dir setuptools
python -c "import pkg_resources; print('OK')"   # 仍然报错

根本原因

setuptools v66.0.0 开始 ,官方将 pkg_resources 从顶层模块移到了内部 _vendor 包中,不再作为独立的顶级模块提供。然而,TensorBoard 的 default.py 中仍然使用 import pkg_resources(顶层导入),因此在新版 setuptools 环境下会触发 ModuleNotFoundError

更早的 setuptools 版本(如 59.8.0)仍然提供 pkg_resources 作为顶层模块。

解决方案

将 setuptools 降级到 59.8.0 即可恢复 pkg_resources 模块。

bash 复制代码
# 卸载当前版本
uv pip uninstall setuptools

# 安装兼容版本
uv pip install setuptools==59.8.0

# 验证
python -c "import pkg_resources; print('OK')"   # 输出 OK

# 启动 TensorBoard
python -m tensorboard.main --logdir exp/default

之后 TensorBoard 正常运行。

替代方案(不推荐)

如果必须使用新版 setuptools,可以手动创建一个 pkg_resources.py 文件,内容为:

javascript 复制代码
from setuptools._vendor import pkg_resources

放置于 .venv\Lib\site-packages 目录下。但此方法可能因 _vendor 内部结构变化而失效,不推荐在生产环境中使用。

经验总结

  1. 不要盲目升级依赖:新版本可能移除旧 API,导致依赖它的工具(如 TensorBoard)崩溃。
  2. 遇到 pkg_resources 缺失时,优先检查 setuptools 版本pip show setuptools 查看版本,若 >= 66,降级到 59.x 即可。
  3. 使用虚拟环境锁定依赖版本 :在 requirements.txtpyproject.toml 中固定 setuptools<60 可避免后续意外升级。

参考链接

相关推荐
晨之清风4 分钟前
Codex常用命令
人工智能
hsg777 分钟前
简述:2026年中考一地作文题目 :接纳无解,向阳求索
人工智能·机器学习
北京耐用通信12 分钟前
国产化替代优选!耐达讯自动化NY-HUB6完美兼容替代PB-HUB6\GL
人工智能·科技·网络协议·自动化·信息与通信
LaughingZhu16 分钟前
Product Hunt 每日热榜 | 2026-06-11
人工智能·经验分享·神经网络·html·产品运营
像风一样自由202029 分钟前
17.推理框架横评:vLLM / TGI / TensorRT-LLM / SGLang 全面对比
人工智能·大模型·vllm·sglang
walnut_oyb31 分钟前
CVPR 2026|VisRes Bench:视觉语言模型视觉推理能力评估
人工智能·语言模型·自然语言处理
网教盟人才服务平台37 分钟前
第223期方班学术研讨厅成功举办
人工智能
lauo43 分钟前
ibbot手机:从赛博攻防到Token经济的AI终端革命
人工智能·智能手机
私人珍藏库1 小时前
【Android】BotHub-多模型AI机器人聚合库-内置免费模型
android·人工智能·智能手机·app·工具·多功能
老马聊技术1 小时前
AI对话功能之SpringBoot整合Vue3
vue.js·人工智能·spring boot·后端