本地 Google App Engine:ImportError:没有名为 google.cloud.bigquery 的模块

Posted

技术标签:

【中文标题】本地 Google App Engine:ImportError:没有名为 google.cloud.bigquery 的模块【英文标题】:Google App Engine Locally: ImportError: No module named google.cloud.bigquery 【发布时间】:2017-08-06 00:27:08 【问题描述】:

正如标题所说。

所以我在appengine_config.py 中添加了以下内容,但没有成功:

# appengine_config.py
from google.appengine.ext import vendor

# Add any libraries install in the "lib" folder.
vendor.add('lib')

我做了一个print sys.path 并验证了 lib 目录包含 google/cloud/bigquery

如果我自己运行python,我可以导入它:

 from google.cloud import bigquery
 print bigquery.__path__
 ['/usr/local/lib/python2.7/dist-packages/google/cloud/bigquery']

来自 Google App Engine 端点:

import google.cloud;print google.cloud.__path__
['/usr/local/lib/python2.7/dist-packages/google/cloud']

Big Query 位于该系统位置。 /usr/local/lib/python2.7/dist-packages/google/cloud/biqguery/ 存在。但是,如果我从应用引擎端点尝试以下操作:

 from google.cloud import bigquery

 ImportError: No module named google.cloud.bigquery

有问题的文件包括但似乎没有帮助:

 from __future__ import absolute_import

更新

我设置了一个 venv 并像这样安装所有东西:pip install -t lib/ -r requirements.txt --upgrade。从那里如果我尝试import google; print google.__path__ 我得到:

 ['lib/google', '/usr/lib/google-cloud-sdk/platform/google_appengine/google']

我认为第二条路径可能是原因。

我查看了以下内容,但没有成功:

Error importing Google Cloud Bigquery api module in python app

https://github.com/GoogleCloudPlatform/google-cloud-python/issues/2366

How to import BigQuery in AppEngine for Python

【问题讨论】:

on Google Groups 发布了一个可能的解决方法,有帮助吗?或者您现在是否以其他方式解决了这个问题? 【参考方案1】:

您需要将google-cloud-bigquery 安装到应用程序的lib 目录中,这是开发服务器正在查看的位置,而不是您系统的库中。来自Installing a third-party library:

    创建一个目录来存储您的第三方库,例如lib/

    mkdir lib
    

    使用带有-t <directory> 标志的pip(版本6 或更高版本)将库复制到您在之前创建的文件夹中 步。例如:

    pip install -t lib/ <library_name>
    

【讨论】:

好吧,起初我创建了一个 venv 并在那里安装了我的要求。没有帮助。我尝试了您刚才的建议,但同样的错误。从我的项目的根目录,我执行了你的步骤。老实说,我已经尝试过了,但我觉得也许我应该再试一次以确保安全。里面venv,外面venv。一个提示可能是,当部署在谷歌应用引擎上时,我遇到了同样的错误。我可以检查 sys.path 并且列出的第一个目录有 bigquery 文件夹。 /usr/local/lib 路径在 GAE 上是没有用的 - 只有你的应用程序(实际上是你的应用程序的服务!)目录下的目录最终会出现在 GAE 上。 是的,我已经开始使用 venv,在我的项目 lib 目录中手动安装库。我实际上取得了进展。看到了 bigquery,但现在当 bigquery 导入单调时我得到“没有合适的实现”。一旦我整理出来,我会用详细信息更新我的答案。同样在 GAE 本身上运行 bigquery 仍然没有找到。 另外 - 不要尝试从常规 python 脚本或 shell 导入/检查它,而是从 GAE 应用程序代码。 GAE 应用程序的工作方式与独立的 Python 应用程序不同 - 它们与 GAE 基础架构中的支持代码结合使用。

以上是关于本地 Google App Engine:ImportError:没有名为 google.cloud.bigquery 的模块的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine - 哪些工具可以在本地编辑数据存储? [关闭]

Google Datastore 仍然指向 App Engine 生产数据库而不是本地模拟器

如何在 Google App Engine 上本地化应用程序?

Google App Engine 远程 API 无法从本地客户端运行

Google App Engine Node.js 本地开发服务器是不是支持 SSL?

在 Google App Engine 中使用 h2 数据库进行本地开发