Python模块arviz无plots属性致Pymc3导入失败,求解决方案
问题
尝试运行以下代码:
import pymc3 as pm import theano.tensor as tt import scipy from scipy import optimize
返回错误信息:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_38164/4136381866.py in <module> ----> 1 import pymc3 as pm 2 import theano.tensor as tt 3 import scipy 4 from scipy import optimize ~\anaconda3\lib\site-packages\pymc3\__init__.py in <module> 70 from pymc3.model import * 71 from pymc3.model_graph import model_to_graphviz ---> 72 from pymc3.plots import * 73 from pymc3.sampling import * 74 from pymc3.smc import * ~\anaconda3\lib\site-packages\pymc3\plots\__init__.py in <module> 26 27 # Makes this module as identical to arviz.plots as possible ---> 28 for attr in az.plots.__all__: 29 obj = getattr(az.plots, attr) 30 if not attr.startswith("__"): AttributeError: module 'arviz' has no attribute 'plots'
已通过以下命令安装相关包:
conda install -c conda-forge arviz conda install -c conda-forge pymc3 conda install -c conda-forge theano-pymc
请问如何解决该AttributeError问题?
解决方案
这个错误是因为新版ArviZ移除了az.plots模块,而旧版PyMC3依赖该模块的结构,版本不兼容导致报错。可以通过以下几种方式解决:
降级ArviZ到兼容版本
执行conda命令安装与PyMC3兼容的ArviZ版本(比如0.15.x系列):conda install -c conda-forge arviz=0.15.1迁移到PyMC(推荐)
PyMC3已停止维护,官方推荐使用PyMC(原PyMC4),它兼容新版ArviZ。安装命令:conda install -c conda-forge pymc迁移后仅需调整导入语句为
import pymc as pm,大部分API与PyMC3兼容,后续能获得持续维护支持。临时修改PyMC3代码(不推荐)
若暂时无法更换版本,可修改PyMC3的plots模块文件应急:
找到路径~/anaconda3/lib/site-packages/pymc3/plots/__init__.py,将第28行的az.plots.__all__替换为az.__all__,并调整后续引用逻辑。但这种方法易引发其他兼容问题,仅作临时救急使用。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

