ImportError: cannot import name signature

ImportError: cannot import name signature

我打算修改原版 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 signature
except ImportError:
    from ..externals.funcsigs import signature

那我就直接from inspect import signature了。仍然得到“ImportError: cannot import name signature

除了如何解决这个问题,我也很好奇为什么原始版本可以导入一个将从其他来源导入的模块?谢谢。

  • 在python2中,inspect模块没有signature方法。
  • 在python 3中,inspect模块确实有一个signature方法。

此代码只是试图同时使用 python 2 和 3。

如果您使用 python 2,您可能需要使用 funcsigs 模块,或者直接使用 sklearn.externals.funcsigs(版本 sklearn >= 0.17)。

已接受的答案不适用于最新版本的 sklearn。

请直接使用

安装funcsigs
pip install funcsigs

并改用 from funcsigs import signature