PyTorch1.9.0+TensorBoard2.6.0导入SummaryWriter报distutils属性错误求助
解决
AttributeError: module 'distutils' has no attribute 'version' 问题 问题根源
这个错误出现在Python 3.10及以上版本中——该版本开始标记distutils为弃用模块,且移除了部分子模块的直接调用路径,而PyTorch 1.9.0和TensorBoard 2.6.0的代码仍依赖旧版distutils.version的调用方式。
可行解决方案
1. 安装兼容版setuptools补全distutils
Python 3.10+默认不自带完整distutils,通过安装指定版本的setuptools可以补充该模块:
pip install setuptools==59.6.0
该版本与PyTorch 1.9.0、TensorBoard 2.6.0的依赖兼容性较好,能避免版本冲突。
2. 直接修改代码导入逻辑
如果不想调整依赖版本,找到torch/utils/tensorboard目录下调用distutils.version的文件(通常是__init__.py或相关依赖文件),将:
import distutils.version
替换为:
from setuptools.extern import distutils
通过setuptools提供的distutils替代系统模块,解决属性找不到的问题。
3. 降级Python版本
若项目允许,将Python版本降级到3.9.x——该版本自带完整的distutils模块,可直接兼容PyTorch 1.9.0和TensorBoard 2.6.0的依赖要求。
验证方式
修改后运行以下代码测试:
from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter() writer.add_scalar('test', 0.5, 1) writer.close()
若未报错且生成TensorBoard日志文件,说明问题已解决。
内容的提问来源于stack exchange,提问作者N01E1se
相关产品推荐
相关产品推荐

