本地 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 无法从本地客户端运行