2016-11-07 10 views
5

Google App Engineランチャーを使用してbigqueryテーブルにデータを読み込むアプリケーションエンジンアプリケーションをビルドしましたが、ローカルホストまたはクラウドで実行すると、 google.cloudを使用中にクラウドログファイルにbigqueryエラーメッセージをインポートします。 Googleクラウドクライアントライブラリをインストールしましたが、それでも私には同じエラーが表示されます。私はgoogle.cloudを使用しているときにクラウドという名前のモジュールがありません。bigquery

---main.pyファイルを使用していたコードが

import argparse 
import time 
import uuid 

from google.cloud import bigquery 

def load_data_from_gcs(dataset_name, table_name, source): 
    bigquery_client = bigquery.Client() 
    dataset = bigquery_client.dataset(dataset_name) 
    table = dataset.table(table_name) 
    job_name = str(uuid.uuid4()) 

    job = bigquery_client.load_table_from_storage(
     job_name, table, source) 

    job.begin() 

    wait_for_job(job) 

    print('Loaded {} rows into {}:{}.'.format(
     job.output_rows, dataset_name, table_name)) 


def wait_for_job(job): 
    while True: 
     job.reload() 
     if job.state == 'DONE': 
      if job.error_result: 
       raise RuntimeError(job.error_result) 
      return 
     time.sleep(1) 


if __name__ == '__main__': 
    parser = argparse.ArgumentParser(
     description=__doc__, 
     formatter_class=argparse.RawDescriptionHelpFormatter) 
    parser.add_argument('Test') 
    parser.add_argument('mytable') 
    parser.add_argument('gs://week/geninfo.csv') 

    args = parser.parse_args() 

    load_data_from_gcs(
     args.dataset_name, 
     args.table_name, 
     args.source) 

--app.yamlファイルには、次のコード

application: mycloudproject 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 

- url: .* 
    script: main.app 

が含まれている含まれているの下に、私が何であるかを教えてください参照してください。行方不明か、私はここで何か間違っていますか?

+0

可能な重複電子プロジェクトは動作していないbigqueryにデータをロードする](http://stackoverflow.com/questions/40418201/app-engine-project-to-load-data-into-bigquery-not-working) –

+0

'python -v'ですか?これは、ロードしたモジュールとどこからモジュールを見るのに役立ちます。 –

+0

出力の文字数が多すぎるため、ここに投稿できません。ファイルを共有する方法はありますか? – LondonUK

答えて

-1

ライブラリの最新バージョンに更新してもよろしいですか? pipによってインストールされたバージョンは古いかもしれません。以前は、モジュールは次のようにインポートされました:

from gcloud import bigquery 

これが機能する場合は、古いバージョンを実行しています。最新版をインストールするには、github projectのマスターから引き出すことをおすすめします。

+0

はい、私は昨日ライブラリをインストールしましたが、これはまだ動作しません。私はまた、あなたがgcloudインポートbigqueryから提案したものにimportステートメントを変更しましたが、それでもまだ動作せず、エラーメッセージを表示します ImportError:gcloudという名前のモジュールがありません – LondonUK

3

これは少しトリッキーなことがあります。 Google Cloudは新しいPython名前空間形式を使用します(ソースを見ると、ディレクトリ構造に__init__.pyがないことがわかります)。

これは、あなたが暗黙の輸入を回避することにより、簡単にこの問題を解決することができPythonの2.7で幸いPEP-420

ではPython 3.3で変更されました。ちょうどあなたのファイルの先頭に以下を追加:助け

from __future__ import absolute_import

希望。

0

google/cloud/...を含むディレクトリを見つけて、pythonが見つけることができるように、そのディレクトリをPYTHONPATHに追加します。 PYTHONPATHに追加する方法の詳細については、this postを参照してください。それはそれを行うには2つの一般的な方法の概要を示します。

はここでbashコマンドでそれを行う方法は次のとおりです。

export PYTHONPATH=$PYTHONPATH:/<path_to_modules> 

またはあなたのスクリプト内のパスに追加しできます

# if the google/ directory is in the directory /path/to/directory/ 
path_to_look_for_module = '/path/to/directory/' 
import sys 
if not path_to_look_for_module in sys.path: 
    sys.path.append(path_to_look_for_module) 

場合それは、ここでは、動作しません。私は、GoogleのAppEngineのモジュールをインポートするための私のプロジェクトの一つで見つかったいくつかのコードは次のとおりです。[アプリENGINの

def fixup_paths(path): 
    """Adds GAE SDK path to system path and appends it to the google path 
    if that already exists.""" 
    # Not all Google packages are inside namespace packages, which means 
    # there might be another non-namespace package named `google` already on 
    # the path and simply appending the App Engine SDK to the path will not 
    # work since the other package will get discovered and used first. 
    # This emulates namespace packages by first searching if a `google` package 
    # exists by importing it, and if so appending to its module search path. 
    try: 
     import google 
     google.__path__.append("{0}/google".format(path)) 
    except ImportError: 
     pass 

    sys.path.insert(0, path) 

# and then call later in your code: 
fixup_paths(path_to_google_sdk) 
from google.cloud import bigquery 
関連する問題