Google App Engine - 大查询 - Python无法找到google.cloud库

时间:2017-02-28 07:18:57

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

我正在使用Eclipse和PyDev在Ubuntu Linux 16.4上使用Python构建App Engine项目。

我使用Flask框架工作正常,我想要做的是连接到Big Query以及我遇到麻烦的地方。

所以我用过:

pip install --upgrade google-cloud-bigquery

要安装Big Query Library,我可以在/usr/local/lib/python2.7/dist-packages

中看到这些包

出于某种原因Eclipse似乎并不认为该库已经注册,我可以忍受,但是当我运行我的项目时dev_appserver.py App Engine无法找到该库:

我在Python PyDev中有这个:

奇怪的是,好像我添加from lib.google.cloud import bigquery PyDev结算,dist-packages在PyDev路径中,所以我不明白为什么它不能解决它。

您还会注意到我已经注释了apiclient.discoveryoauth2client.client,我会尝试另一种方式,但App Engine抱怨它无法找到{ {1}}库所以我确信这一切都是由相同的问题引起的。

SignedJwtAssertionCredentials我有:

App Engine Config

3 个答案:

答案 0 :(得分:0)

如果您想使用未包含{3}}列表的第三方库,则必须手动添加它们。

为了手动包含任何其他库,您必须将它们放在app.yaml所在的目录中。例如,如果您有以下结构:

hello
├── libs
│   └── bs4 
├── hello.py 
└── app.yaml

然后在你的hello.py中你必须将这两行放在文件的开头:

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

执行此操作后,您将能够使用您将要放在该libs目录中的任何第三方库。例如:

from bs4 import BeautifulSoup

答案 1 :(得分:0)

虽然@Bravin在正确的道路上,vendoring in 3rd party libraries推荐程序有点不同:

  
      
  1. 创建一个目录来存储您的第三方库,例如package:async/src/byte_collector.dart:1 'package:async/src/byte_collector.dart': error: line 42 pos 16: generic functions not supported T _collectBytes<T>( ^: package:async/src/byte_collector.dart

    lib/
  2.   
  3. 使用pip(版本6或更高版本)和mkdir lib 标志将库复制到您在上一步中创建的文件夹中。   例如:

    -t <directory>
         

    Using Homebrew Python on Mac OS X?

  4.   
  5. 在与 pip install -t lib/ <library_name> 文件相同的文件夹中创建名为appengine_config.py的文件。

  6.   
  7. 编辑app.yaml文件并将您的库目录提供给appengine_config.py方法。

    vendor.add()
  8.   

答案 2 :(得分:0)

(2021 年 6 月):在 OP 和各种响应中似乎有些混乱,所以让我们让 Python 2 用户非常清楚:

  1. google-cloud-bigquery 添加到 requirements.txt
  2. 创建 appengine_config.py 以匹配 Step 4 on this page(您似乎拥有)
  3. apiclient 中删除带有 googleapiclientoauth2clientmain.py(错误的客户端库)的行
  4. 运行 pip2 install -t lib -r requirements.txt(如果您没有安装 Python 3,则只运行 pip
  5. 注意:Python 3 用户不必玩这些游戏......上面的第 1 步就是你需要做的......没有 appengine_config.py 文件,没有运行 {{ 1}},没有 pip install 文件夹。

对于更广泛的受众,请参阅my answer to this more general question