【问题标题】:"import fuzzywuzzy" causes error, while "from fuzzywuzzy import fuzz" does not“import Fuzzywuzzy”会导致错误,而“fromfuzzywuzzy import fuzz”不会
【发布时间】:2020-09-01 03:31:34
【问题描述】:

运行以下代码时,我收到一条错误消息。

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

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

【问题讨论】:

    标签: python import fuzzywuzzy


    【解决方案1】:

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

    fuzzywuzzy/
               __init__.py
               fuzz.py
    

    在这种情况下,fuzz 很可能没有导入到 __init__.pyfuzzywuzzy 中。当导入模块的顶层时,python 只允许访问那些被导入该模块的东西。正如您在示例中看到的那样,子模块需要额外的导入。

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

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

    【讨论】:

    • 添加到这里你可以看到here子模块没有被导入__init__.py
    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 2018-07-30
    • 1970-01-01
    • 2021-10-04
    • 2020-09-10
    • 1970-01-01
    • 2020-03-06
    • 2012-10-10
    相关资源
    最近更新 更多