gpt4 book ai didi

python - 导入直方图时 Pyroot AttributeError

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:35 25 4
gpt4 key购买 nike

我对 pyroot 有疑问。当我尝试导入 ROOT 直方图时,我总是得到相同的 AttributeError。

>>> from ROOT import TH1F
AttributeError: type object 'TArray' has no attribute '__getitem__'

During handling of the above exception, another exception occurred:

SystemError: <built-in method mro of ROOT.PyRootType object at 0x328fb18> returned a result with an error set
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'TH1F'

我也尝试过 rootpy,但它不起作用。可能相关?

我安装了 Python 3.5,并使用 gcc 5.2.0 进行了 ROOT 的全新安装。当我运行 root-config --features 时会列出 Python 模块。

有什么想法吗?还是解决方案?

最佳答案

您面临的问题与 Python 中最近的一项更改有关,该更改解决了错误的异常处理问题。 Pythonize.cxx 包装器中的调用尝试将 __getitem__ 属性重命名为不存在的类 TArray。这会导致 AttributeError 在 Python 中被忽略,直到新的 python3.5 版本发布。

要恢复旧行为,您需要修改 $ROOTSYS/bindings/pyroot/src/ 目录中的文件 Utility.cxx。搜索方法

Bool_t PyROOT::Utility::AddToClass( PyObject* pyclass, const char* label, const char* func )

应该在第 230 行左右。在这个方法中是一个 if 条件:

if ( ! pyfunc )
return kFALSE;

这里需要将上面的代码替换成下面几行:

if ( ! pyfunc ) {
PyErr_Clear();
return kFALSE;
}

PyErr_Clear() 的调用将解决这个问题。保存文件并重新编译您的 ROOT 安装。这应该可以解决问题。

编辑:这个问题已经有错误报告:https://sft.its.cern.ch/jira/browse/ROOT-7640

关于python - 导入直方图时 Pyroot AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com