如何解决docplex中`np.float_`在NumPy 2.0被移除的报错?
解决方案
问题核心是旧版docplex依赖已被numpy 2.0移除的np.float_ API,且你当前的Python 3.11与numpy 1.19.5不兼容,导致降级操作未生效。以下是可行的解决方法:
方法1:使用匹配版本的虚拟环境(最稳妥)
- 安装Python 3.8~3.10中的任意版本(numpy 1.19.5支持Python 3.6-3.8,CPLEX 22.1.1支持Python 3.7-3.10)
- 创建并激活虚拟环境:
# 以Python3.8为例 python3.8 -m venv cplex_env # Windows系统激活 cplex_env\Scripts\activate # Linux/macOS系统激活 source cplex_env/bin/activate - 安装指定版本依赖:
pip install numpy==1.19.5 docplex==2.10.154 - 安装CPLEX Python API:找到CPLEX安装目录下的
python文件夹,运行setup.py install(例如路径:C:\Program Files\IBM\ILOG\CPLEX_Studio2211\python\setup.py install)
方法2:临时兼容补丁(快速测试)
在你的代码最开头添加以下代码,手动为numpy添加float_别名,绕过docplex的旧API调用:
import numpy as np # 为numpy 2.0添加兼容别名 if not hasattr(np, 'float_'): np.float_ = np.float64
之后再导入docplex模块。注意:这是临时 workaround,可能存在潜在兼容性问题,仅用于快速验证代码逻辑。
方法3:升级docplex到兼容numpy的版本(需匹配CPLEX)
CPLEX 22.1.1对应的最新兼容docplex版本为2.21.x(如2.21.207),该版本已修复numpy 2.0的API适配问题:
- 先卸载旧版依赖:
pip uninstall -y docplex numpy - 安装匹配版本:
pip install docplex==2.21.207 numpy>=1.21.0,<2.0
(注:numpy 1.21+支持Python 3.11,且docplex 2.21.207已适配这些版本的numpy API)
内容的提问来源于stack exchange,提问作者Meet Saiya
相关产品推荐
相关产品推荐

