Jupyter Notebook导入Optuna报错:无法从sqlalchemy.orm.interfaces导入NOT_EXTENSION
问题描述
在Jupyter Notebook中执行import optuna时出现报错:
ImportError: cannot import name 'NOT_EXTENSION' from 'sqlalchemy.orm.interfaces'
此前已安装pytorch-2.0.1,尝试过降级PyTorch、卸载重装Optuna和SQLAlchemy,但问题未解决。
错误原因
这个错误源于Optuna与SQLAlchemy版本不兼容:
NOT_EXTENSION是SQLAlchemy 1.x版本中sqlalchemy.orm.interfaces模块下的常量;- SQLAlchemy升级到2.0+版本后,该常量被移除;
- 若安装的Optuna版本较旧,它仍会尝试导入这个已被移除的常量,从而触发导入错误。
解决方法
方法1:降级SQLAlchemy到兼容版本
安装Optuna支持的旧版SQLAlchemy(以1.4.x系列稳定版为例):
!pip install sqlalchemy==1.4.49
(终端执行时去掉开头的!)
方法2:升级Optuna到适配SQLAlchemy 2.0的版本
Optuna 3.2.0及以上版本已适配SQLAlchemy 2.0,直接升级即可:
!pip install --upgrade optuna
额外注意
确保Jupyter Notebook使用的Python环境与执行安装命令的环境一致。可在Notebook中执行以下命令验证环境路径:
import sys print(sys.executable)
若环境不一致,需切换到对应环境重新安装依赖。
内容的提问来源于stack exchange,提问作者disag
相关产品推荐
相关产品推荐

