“ 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'))

有人可以帮我解决这个问题吗?我真的很感激。

解决方法

此问题的答案取决于包裹的布局方式。我假设您的目录树看起来像这样:

fuzzywuzzy/
           __init__.py
           fuzz.py

在这种情况下,很可能fuzz的{​​{1}}未被导入__init__.py中。当导入模块的顶层时,python只允许访问那些导入到该模块中的东西。如您的示例所示,子模块需要额外的导入。

如果您希望第一个导入工作,则需要将fuzzywuzzy添加到import fuzz的{​​{1}}文件中,否则必须使用{{1} }。您也可以__init__.py

但是,我建议不要将这些导入添加到fuzzywuzzy中,因为它会使您的代码不太明确,这意味着阅读该代码的新手将不得不浏览另一个文件以了解从何处导入函数。