【问题标题】:ImportError: cannot import name language in Google Cloud Language APIImportError:无法在 Google Cloud Language API 中导入名称语言
【发布时间】:2018-10-08 21:30:09
【问题描述】:

我正在尝试使用来自 Google Natural Language API 的示例代码来获取情绪分数。但是,每次运行代码时,我都会收到“ImportError:无法导入名称语言”。第一行的错误。

我已经 pip 安装了库,尝试卸载并重新安装,在控制台上创建了凭据(API 显示为已启用)并查看了本教程并完成了答案中的这些步骤:Google sentiment analysis - ImportError: cannot import name language。它没有帮助。还有什么我可以尝试的吗?

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types

client = language.LanguageServiceClient()

text = u'Hello, world!'
document = types.Document(
    content=text,
    type=enums.Document.Type.PLAIN_TEXT)

sentiment = client.analyze_sentiment(document=document).document_sentiment

print('Text: {}'.format(text))
print('Sentiment: {}, {}'.format(sentiment.score, sentiment.magnitude))

我也用正确的路径将它粘贴到我的终端中。

export GOOGLE_APPLICATION_CREDENTIALS="/....(my path)/service_key.json"

堆栈跟踪:

Traceback (most recent call last):
  File "lang.py", line 3, in <module>
    from google.cloud import language
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google/cloud/language.py", line 17, in <module>
    from google.cloud.language_v1 import LanguageServiceClient
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google/cloud/language_v1/__init__.py", line 17, in <module>
    from google.cloud.language_v1 import types
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google/cloud/language_v1/types.py", line 18, in <module>
    from google.api_core.protobuf_helpers import get_messages
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google/api_core/__init__.py", line 20, in <module>
    from pkg_resources import get_distribution
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3161, in <module>
    @_call_aside
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3145, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3189, in _initialize_master_working_set
    for dist in working_set
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3189, in <genexpr>
    for dist in working_set
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2715, in activate
    declare_namespace(pkg)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2274, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2209, in _handle_ns
    loader.load_module(packageName)
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pkgutil.py", line 246, in load_module
    mod = imp.load_module(fullname, self.file, self.filename, self.etc)
  File "/.../lang.py", line 3, in <module>
    from google.cloud import language
ImportError: cannot import name language

【问题讨论】:

  • 请将完整的错误回溯添加到您的问题中!
  • 试一试:将您的 Python 文件重命名为 lang.py 以外的其他名称。
  • 是的,只是再次尝试重命名,但也没有用:(
  • 你能发布语言的版本吗?你试过在virtualenv中吗?此外,回溯行号似乎与您发布的代码不匹配。源代码变了吗?

标签: python google-api google-cloud-platform google-cloud-functions google-natural-language


【解决方案1】:

这似乎是这个问题的重复:

Google sentiment analysis - ImportError: cannot import name language

对我来说,升级 google-api-python-client 和 google-cloud 是不够的

相反,解决我的问题的是:

!pip install google-cloud-language

此外,当您升级 google api 库时,会出现与 awsebcli 库(来自 AWS)不兼容的错误。

【讨论】:

  • 请解释这是在做什么以及它如何帮助解决问题。
  • 它也适用于我的情况。我刚刚做了'pip install google-cloud-language'。显然只安装 google-cloud 是不够的。需要额外安装 google-cloud-language。
【解决方案2】:

解释:

如果您查看堆栈跟踪,google.cloud.language 的导入实际上是有效的,它不是循环的。堆栈跟踪中的第二个和第三个项目是 langauge.py 成功请求下面的项目,最终委托给 google.api_core(这是所有这些库背后的运行时)。

跟踪中的第五行是有趣的:它对应于google/api_core/__init__.py 的第20 行,它是from pkg_resources import get_distribution。之后发生的一切都是为了使导入工作;因为它没有,ImportError 会冒泡,并且之前的导入级联失败。

可能的解决方案:

确保您的 pipsetuptools 是最新的。命名空间打包是出了名的棘手,所以你必须有一个相当新的版本。只需发出pip install --upgrade setuptools pip

绝妙的解决方案:

你考虑过 Python 3 吗? :-)

疑难解答:

如果这不起作用(并且 Python 3 不是一个选项),那么我们需要知道的下一件事是最终失败是什么。曲目中的倒数第二个电话是对imp.load_module(fullname, self.file, self.filename, self.etc) 的电话。我们需要知道这些值是什么才能进一步排除故障。要获取它们,请在导入失败的代码之前立即添加import pdb ; pdb.set_trace()。这将把你扔到调试器中。使用n(下一个)和s(进入函数)来移动代码(您可以通过在REPL中键入它们来获取变量值等)。如果您可以打印出具体尝试导入的值,我们可以进一步为您提供帮助。

【讨论】:

    【解决方案3】:

    尝试升级pip:

    python -m pip install --upgrade pip
    

    然后升级谷歌包:

    pip install --upgrade google-api-python-client
    pip install --upgrade google-cloud
    

    【讨论】:

      【解决方案4】:

      如果使用 Google Cloud Functions,请确保在 requirements.txt 选项卡中指定了 google-cloud-language:

      【讨论】:

        猜你喜欢
        • 2019-10-15
        • 1970-01-01
        • 2018-12-11
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 2014-10-10
        相关资源
        最近更新 更多