【问题标题】:Error importing Google Cloud Bigquery api module in python app在 python 应用程序中导入 Google Cloud Bigquery api 模块时出错
【发布时间】:2017-04-14 15:35:15
【问题描述】:

我正在尝试将 bigquery 导入我的 python 应用程序from google.cloud import bigquery并使用 dev_appserver.py 在本地运行它,但我收到一个错误:

File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/Volumes/Budhi/Users/anjas/Projects/wordworks/urlworker/main.py", line 9, in <module>
from google.cloud import bigquery
File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 999, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named google.cloud.bigquery

我已经用 pip 安装了 bigquery 库:

pip install --upgrade google-cloud-bigquery

我也尝试将它作为 3d 方库安装到 lib 目录中,但没有结果。

虽然当我尝试从 python shell 导入 bigquery 库时它可以工作:

Python 2.7.10 (default, Jul 30 2016, 18:31:42) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more  information.
>>> from google.cloud import bigquery
>>> 

更新:

似乎安装到 project/lib/ 文件夹的“google”模块与 google-cloud-sdk/platform/google_appengine 中的“google”模块发生冲突。

尝试做的时候

from google.cloud import bigquery

python 在 google-cloud-sdk/platform/google_appengine/google 内部而不是 project/lib/google/cloud

内部寻找模块

有什么想法吗?

【问题讨论】:

  • 你是否在项目根目录下的 lib 文件夹中安装了库?
  • 当然,我试过安装一些其他的库,比如 Flask,导入它们没有问题
  • 我遇到了同样的问题。我所有其他安装的供应商库都可以正常工作。 bigquery 但是我无法在本地或远程导入。我遵循了所有我能找到的解决方案,但没有成功。

标签: python google-app-engine google-bigquery


【解决方案1】:

我遇到了完全相同的错误,并通过删除 appengine sdk 中的 google 文件夹来解决此问题,或者您可以尝试将其复制到您的 lib 文件夹中。这将解决本地开发环境中的问题,但在将服务部署到生产环境时需要恢复此问题。

我找不到同时保留 google-cloud-sdk/platform/google_appengine/googleproject/lib/google/cloud 的解决方法。您需要删除其中一个

【讨论】:

    【解决方案2】:

    你是否在 appengine_config.py 中添加了 lib 文件夹?

    from google.appengine.ext import vendor
    vendor.add('lib')
    

    【讨论】:

    • 是的,我做到了。我遇到了一些其他的事情,安装 lib/google 的包里面没有 init.py,所以它没有被识别为包。添加 init.py 解决不了任何问题。似乎这个 SDK 是要全局安装的。但是我已经在全球范围内安装了它,但没有结果。
    【解决方案3】:

    我遇到了同样的问题。如果您在本地环境中运行它,您可能需要尝试将 lib 文件夹位置添加到 $PYTHONPATH 环境变量中,或者在导入将 lib 文件夹位置插入到字符串列表中的 bigquery lib 之前添加以下代码行指定模块的搜索路径。

    import sys    
    sys.path.insert(0, 'lib')
    

    我相信这是可行的,因为现在 python 文件不需要放在包中。

    【讨论】:

    • vendor.add('lib') 基本上是sys.path.insert() 的包装。
    【解决方案4】:

    我认为您正在经历的事情与我正在经历的事情非常接近,尽管我在测试期间看到了它。

    我认为这可能是因为 google sdk 需要的路径操作:在您放入 libs 文件夹的那些库之前可以看到随 sdk 提供的库。

    以下是发生在我身上的事情,以及一些细节:

    Wrong dependency in Google Cloud SDK for google-auth?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2015-05-03
      • 2010-11-25
      • 2015-12-05
      相关资源
      最近更新 更多