import fuzzywuzzy вызывает ошибку, а from fuzzywuzzy import fuzz — нет.

При запуске следующего кода я получаю сообщение об ошибке.

import fuzzywuzzy
print(fuzzywuzzy.fuzz.ratio('about', 'doubt'))

Сообщение об ошибке:

Traceback (most recent call last):
  File "C:/Users/vincent/Documents/PythonScripts/test2.py", line 2, in <module>
    print(fuzzywuzzy.fuzz.ratio('about', 'doubt'))
AttributeError: module 'fuzzywuzzy' has no attribute 'fuzz'

Howerer, следующее работает отлично.

from fuzzywuzzy import fuzz
print(fuzz.ratio('about', 'doubt'))

Может ли кто-нибудь помочь мне решить эту проблему? Я очень ценю это.


person wbzy00    schedule 01.09.2020    source источник


Ответы (1)


Ответ на этот вопрос зависит от того, как расположены ваши пакеты. Я предполагаю, что ваше дерево каталогов выглядит примерно так:

fuzzywuzzy/
           __init__.py
           fuzz.py

В этом случае вполне вероятно, что fuzz не импортируется в __init__.py для fuzzywuzzy. При импорте верхнего уровня модуля python разрешает доступ только к тем вещам, которые импортируются в этот модуль. Подмодули требуют дополнительного импорта, как вы видели в своем примере.

Если вы хотите, чтобы первый импорт работал, вам нужно добавить import fuzz в файл __init__.py для fuzzywuzzy, в противном случае вам придется использовать файл from ... import. Вы также можете import fuzzywuzzy.fuzz.

Однако я бы рекомендовал не добавлять эти импорты в __init__.py, потому что это делает ваш код менее явным и означает, что новым людям, читающим код, придется просматривать другой файл, чтобы понять, откуда импортируются функции.

person mcrute    schedule 01.09.2020
comment
Чтобы добавить к этому, вы можете увидеть здесь, что подмодули не импортируется в __init__.py - person maxbachmann; 01.09.2020