2017-02-28 53 views
7

我在Ubuntu Linux 16.4上使用Eclipse和PyDev构建了一个使用Python的App Engine项目。Google App Engine - Big Query - Python无法找到库google.cloud

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

所以我用:

pip install --upgrade google-cloud-bigquery 

要安装大查询库,我可以看到包在/usr/local/lib/python2.7/dist-packages

出于某种原因,Eclipse的似乎不认为库已注册,我可以忍受的,但是当我跑我的项目dev_appserver.py应用程序引擎无法找到库:

我有这个在我的Python的PyDev:

这是奇怪的,如果我加from lib.google.cloud import bigquery PyDev的解决,距离 - 包是在PyDev的路,所以我不知道为什么它不挑它起来。

您还会注意到我已经注释掉apiclient.discoveryoauth2client.client,我会尝试另一种方式,但App Engine的抱怨它找不到SignedJwtAssertionCredentials库,所以我相信这是所有链接,并造成同样的问题。

在我appengine_config.py我:

App Engine Config

+0

这是因为SDK和谷歌的云包包含谷歌文件夹。 –

+0

@MattStannard你找到了解决问题的办法。我面对同样的情况。 –

回答

0

如果你想使用未列入名单this第三方库,那么你就必须手动添加它们。

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

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

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

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

做之后,你会能够使用任何你要放入libs目录的第三方库。例如:

from bs4 import BeautifulSoup 
+0

感谢您的回复。 @dan - 我已经尝试过这个,事实上,如果你看看我的appengine_config.py截图,你会发现它与你的建议相符。 bravin - 我已经厌倦了这实际上不工作 –

0

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

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

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

    pip install -t lib/ <library_name> 
    

    Using Homebrew Python on Mac OS X?

  3. 创建一个名为在同一文件夹appengine_config.py为您app.yaml文件的文件。

  4. 编辑appengine_config.py文件,并提供您的图书馆目录到vendor.add()方法。

    # appengine_config.py 
    from google.appengine.ext import vendor 
    
    # Add any libraries install in the "lib" folder. 
    vendor.add('lib') 
    
+0

谢谢你的回应。 –

+0

@MattStannard它工作吗? –

+0

没有身份证没有工作。 –