我正在尝试修改原始的 sklearn.CalibrationCV
以创建我自己的版本。原始代码中有 “from .utils.fixes import signature”。所以我在我的版本中做了如下操作:
from sklearn.utils.fixes import signature
但得到了一个错误:
ImportError: cannot import name signature
当我在 GitHub 上检查 sklearn 的源代码时,我在 fixes.py
中看到了以下代码:
try: from inspect import signatureexcept ImportError: from ..externals.funcsigs import signature
然后我直接使用了 from inspect import signature
。仍然得到 “ImportError: cannot import name signature
“
除了如何修复这个问题之外,我还很好奇为什么原始版本可以从另一个来源导入一个模块?谢谢。
回答:
这段代码只是为了兼容 Python 2 和 Python 3。
如果你使用的是 Python 2,你可能需要使用 funcsigs
模块,或者直接使用 sklearn.externals.funcsigs
(适用于 sklearn >= 0.17
的版本)。