ImportError: 无法导入名称 signature

3

我正在尝试修改原始的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"的错误。

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

2个回答

3
  • 在Python 2中,inspect模块没有signature方法。
  • 在Python 3中,inspect模块有signature方法。

这段代码只是尝试同时适用于Python 2和3。

如果你使用的是Python 2,你可能需要使用funcsigs模块,或直接使用sklearn.externals.funcsigs(对于版本sklearn >= 0.17)。


谢谢。当我尝试使用'from sklearn.externals.funcsigs import signature'时,出现了“ImportError: No module named funcsigs”的消息。有什么建议吗? - Bin
1
你可以安装 funcsigs 模块吗? - dnozay
2
谢谢!dnozay!安装了funcsigs之后,导入signature就可以工作了。"from funcsigs import signature" - Bin

2

被接受的答案在最新版本的sklearn中不起作用。

请直接使用以下命令安装funcsigs

pip install funcsigs

请使用from funcsigs import signature代替。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接