2

Я привязываю, чтобы изменить оригинал sklearn.CalibrationCV, чтобы создать мою выигранную версию. Исходный код имеет «from .utils.fixes import signature». Таким образом, я сделал следующее в моей версии:ImportError: не может импортировать подпись имени

from sklearn.utils.fixes import signature 

но получил ошибку:

ImportError: cannot import name signature 

Когда проверить исходный sklearn код на GitHub. Я вижу следующий код внутри fixes.py:

try: 
    from inspect import signature 
except ImportError: 
    from ..externals.funcsigs import signature 

Тогда я сделал from inspect import signature непосредственно. Все еще получите «ImportError: cannot import name signature»

Кроме того, как исправить это, мне также интересно узнать, почему исходная версия может импортировать модуль, который будет импортирован из другого источника? Благодарю.

ответ

2
  • В python 2 модуль inspect не имеет метода signature.
  • В python 3 модуль inspect имеет метод signature.

Этот код просто пытается работать как с питоном 2 и 3.

Вы можете захотеть использовать funcsigs модуль, если вы используете Python 2, или использовать sklearn.externals.funcsigs напрямую (для версии sklearn >= 0.17).

+0

Спасибо. Когда я попробовал 'из sklearn.externals.funcsigs импортировать подпись' получил и сообщение 'ImportError: Нет модуля с именем funcsigs'. Какие-либо предложения? – Bin

+1

вы можете установить модуль 'funcsigs'? – dnozay

+1

Спасибо! dnozay! После установки funcsigs работала импортная подпись. «от сигнатуры импорта funcsigs» – Bin

Смежные вопросы