"import fuzzywuzzy" 会导致错误,而 "from fuzzywuzzy import fuzz" 不会

"import fuzzywuzzy" causes error, while "from fuzzywuzzy import fuzz" does not

当运行以下代码时,我得到一个错误信息。

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'

然而,以下运行完美。

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

有人可以帮我解决这个问题吗?非常感谢。

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

fuzzywuzzy/
           __init__.py
           fuzz.py

在这种情况下,fuzz 可能没有导入到 __init__.py 中用于 fuzzywuzzy。当导入模块的顶层时 python 只允许访问那些被导入到该模块中的东西。 Sub-modules 需要额外的导入,如您在示例中所见。

如果您希望第一次导入工作,那么您需要将 import fuzz 添加到 fuzzywuzzy__init__.py 文件中,否则您将不得不使用 from ... import。你也可以 import fuzzywuzzy.fuzz.

我建议不要将这些导入添加到 __init__.py,但是,因为它会使您的代码不那么明确,这意味着阅读代码的新人将不得不查看另一个文件以了解函数的位置导入。