使用google.cloud导入bigquery时没有名为cloud的模块

Lon*_*nUK 12 google-app-engine python-2.7 google-bigquery

我已经构建了一个应用程序引擎应用程序,使用谷歌应用程序引擎启动器将数据加载到bigquery表中,但是当我在本地主机或云上运行它时,我在日志文件中使用google.cloud import bigquery错误消息时得到名为cloud的No模块.我已经安装了谷歌云客户端库,但它仍然给我同样的错误.请参阅下面我正在使用的代码

---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)
Run Code Online (Sandbox Code Playgroud)

--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
Run Code Online (Sandbox Code Playgroud)

请告诉我遗失的内容或我在这里做错了什么?

Che*_*het 5

这可能有点棘手。Google Cloud使用新的Python名称空间格式(如果查看源,您会注意到__init__.py目录结构中没有)。

在Python 3.3中使用PEP-420对此进行了更改

幸运的是,在Python 2.7中,您可以通过避免隐式导入来轻松解决此问题。只需将其添加到文件顶部即可:

from __future__ import absolute_import

希望能有所帮助。


Dan*_*ary -2

您确定已更新到该库的最新版本吗?pip 安装的版本可能已过时。以前,该模块导入为:

from gcloud import bigquery
Run Code Online (Sandbox Code Playgroud)

如果有效,则您正在运行旧版本。要安装最新版本,我建议从github 项目中的 master 中拉取。