2017-02-28 52 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

沒有身份證沒有工作。 –