Pyomo导入报错:module 'pyomo.common'无'errors'属性求助
解决Pyomo导入时
AttributeError: module 'pyomo.common' has no attribute 'errors'问题 问题现象
在Python 3.12环境中使用Pyomo建模,执行from pyomo.environ import *时触发AttributeError,错误提示为module 'pyomo.common' has no attribute 'errors'。
触发报错的代码
from pyomo.environ import * model = ConcreteModel() # Variables model.x = Var(range(len(wh_capacities_df)), within=NonNegativeReals) # Objective model.obj = Objective(expr=sum((model.x[i] - demand_per_day[i])**2 for i in range(len(demand_per_day))), sense=minimize) # Constraints model.constraints = ConstraintList() for i in range(len(wh_capacities_df)): model.constraints.add(model.x[i] <= wh_capacities_df['Daily Capacity '].iloc[i]) # Solve SolverFactory('glpk').solve(model) # Display results for i in range(len(wh_capacities_df)): print(f"Optimal capacity for plant {wh_capacities_df['Plant ID'].iloc[i]}: {model.x[i].value}")
完整错误信息
{ "name": "AttributeError", "message": "module 'pyomo.common' has no attribute 'errors'", "stack": "--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[32], line 1 ----> 1 from pyomo.environ import * 3 model = ConcreteModel() 5 # Variables File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pyomo\environ\__init__.py:86 82 pkg = _sys.modules[pname] 83 pkg.load() ----> 86 _import_packages() 88 # 89 # Expose the symbols from pyomo.core 90 # 91 from pyomo.dataportal import DataPortal File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pyomo\environ\__init__.py:66, in _import_packages() 64 pname = _package + '.plugins' 65 try: ----> 66 _do_import(pname) 67 except ImportError: 68 exctype, err, tb = _sys.exc_info() # BUG? File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pyomo\environ\__init__.py:18, in _do_import(pkg_name) 17 def _do_import(pkg_name): ----> 18 importlib.import_module(pkg_name) File C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1520.0_x64__qbz5n2kfra8p0\Lib\importlib\__init__.py:90, in import_module(name, package) 88 break 89 level += 1 ----> 90 return _bootstrap._gcd_import(name[level:], package, level) File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pyomo\core\__init__.py:83 69 from pyomo.core.expr.symbol_map import SymbolMap 70 from pyomo.core.expr import ( 71 numvalue, 72 numeric_expr, (...) 81 calculus, 82 ) ----> 83 from pyomo.core import expr, util, kernel 85 from pyomo.core.expr.numvalue import ( 86 nonpyomo_leaf_types, 87 PyomoObject, (...) 96 ZeroConstant, 97 ) 98 from pyomo.core.expr.boolean_value import ( 99 as_boolean, 100 BooleanConstant, 101 BooleanValue, 102 native_logical_values, 103 ) File pyomo\\core\\util.pyx:19, in init pyomo.core.util() File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pyomo\core\base\__init__.py:38 18 from pyomo.core.expr.numvalue import ( 19 nonpyomo_leaf_types, 20 native_types, (...) 29 ZeroConstant, 30 ) 31 from pyomo.core.expr.boolean_value import ( 32 as_boolean, 33 BooleanConstant, 34 BooleanValue, 35 native_logical_values, 36 ) ----> 38 from pyomo.core.base.component import name, Component, ModelComponentFactory 39 from pyomo.core.base.componentuid import ComponentUID 40 from pyomo.core.base.config import PyomoOptions File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pyomo\core\base\component.py:79 74 @deprecated(msg="The cname() function has been renamed to name()", version='5.6.9') 75 def cname(*args, **kwds): 76 return name(*args, **kwds) ----> 79 class CloneError(pyomo.common.errors.PyomoException): 80 pass 83 class ComponentBase(PyomoObject): AttributeError: module 'pyomo.common' has no attribute 'errors'" }
已尝试的无效操作
- 更新Pyomo至6.7.3版本
- 降级Pyomo至5.7.3版本
- 检查包冲突
可行解决方法
彻底卸载Pyomo及其关联包
执行以下命令完全移除已安装的Pyomo组件:pip uninstall -y pyomo pyomo.common pyomo.core pyomo.environ清理残留文件
找到Python site-packages目录(示例路径:~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages),删除所有以pyomo开头的文件夹和对应的.dist-info文件夹,避免残留文件导致版本冲突。创建并激活虚拟环境(推荐)
虚拟环境能隔离全局包的干扰,执行以下命令创建:python -m venv pyomo_env # Windows系统激活 pyomo_env\Scripts\activate # Linux/macOS系统激活 source pyomo_env/bin/activate重新安装兼容版本
Python 3.12对Pyomo的兼容性在6.8.0及以上版本中得到修复,执行安装命令:pip install pyomo>=6.8.0验证安装
在激活的虚拟环境中运行以下代码,确认Pyomo可正常导入:from pyomo.environ import ConcreteModel, Var, Objective, ConstraintList, SolverFactory print("Pyomo导入成功")
内容的提问来源于stack exchange,提问作者nuwan desilva
相关产品推荐
相关产品推荐

