ImportError:无法从'graphs'导入'Sonnet'的其他解决方案咨询
问题描述
运行代码:
import graph_nets as gn
出现错误:
ImportError: cannot import name 'Sonnet' from 'graphs'
错误根源是sonnet包中的一行代码:from graphs import Sonnet, D3Graph, MatplotGraph。
尝试过常规方案:
pip uninstall sonnet pip install dm-sonnet
但无效,执行pip install dm-sonnet提示requirement already satisfied;卸载sonnet后运行代码,又出现:
module 'sonnet' has no attribute '__version__'
可行解决方案
排查本地/第三方包冲突
- 检查当前工作目录下是否存在
graphs.py文件或graphs文件夹,若有则重命名或删除,避免干扰包的正常导入。 - 执行
pip list查看是否有其他名为graphs的第三方包,如有则卸载:pip uninstall -y graphs。
- 检查当前工作目录下是否存在
彻底清理并重装适配版本
- 卸载所有sonnet相关包:
pip uninstall -y sonnet dm-sonnet - 清理pip缓存:
pip cache purge - 安装与
graph_nets兼容的dm-sonnet版本(建议选择v1.x系列,比如1.3.0):pip install dm-sonnet==1.3.0 graph_nets
- 卸载所有sonnet相关包:
使用虚拟环境隔离依赖
- 创建并激活新的虚拟环境:
# 创建虚拟环境 python -m venv graph_nets_env # Windows系统激活 graph_nets_env\Scripts\activate # Linux/macOS系统激活 source graph_nets_env/bin/activate - 在虚拟环境中重新安装依赖:
pip install graph_nets dm-sonnet
- 创建并激活新的虚拟环境:
验证导入路径正确性
执行以下代码查看sonnet的安装路径,确认是否为dm-sonnet的正确路径:import sonnet print(sonnet.__file__)如果路径指向旧的
sonnet包而非dm-sonnet,则手动删除该路径下的sonnet文件夹,再重新安装dm-sonnet。
内容的提问来源于stack exchange,提问作者playerJX1
相关产品推荐
相关产品推荐

