Python 导入错误:当我尝试导入BigQuery时,没有名为google.cloud的模块
当我尝试在Google应用程序引擎中使用此语句时Python 导入错误:当我尝试导入BigQuery时,没有名为google.cloud的模块,python,python-2.7,google-app-engine,google-bigquery,google-app-engine-python,Python,Python 2.7,Google App Engine,Google Bigquery,Google App Engine Python,当我尝试在Google应用程序引擎中使用此语句时 from google.cloud import big query 它产生错误没有名为Cloud的模块,但是如果我从本地计算机运行它,它运行良好并更新BigQuery表 我想让它成为谷歌应用程序引擎上的一个cron作业,但这不起作用 环境: 我使用的是标准环境及其Python 2.7。我没有运行App Engine SDK开发服务器,我正在部署应用程序live 我的代码是: import time import uuid from go
from google.cloud import big query
它产生错误没有名为Cloud的模块
,但是如果我从本地计算机运行它,它运行良好并更新BigQuery表
我想让它成为谷歌应用程序引擎上的一个cron作业,但这不起作用
环境:
我使用的是标准环境及其Python 2.7。我没有运行App Engine SDK开发服务器,我正在部署应用程序live
我的代码是:
import time
import uuid
from google.cloud import bigquery
client = bigquery.Client()
jobid = "jid" + str(uuid.uuid4())
query = "Select * FROM Table"
job = client.run_async_query(jobid, query)
当我运行命令gcloud app browse
时,它会打开一个浏览器并给出以下错误:
原因可能是
appengine标准环境
还不支持大查询
客户端库。我遇到了这个问题。在这方面还有更多有益的讨论。你也许可以在这里找到解决办法
更新
谢谢你的评论和建议。为了改进上一篇文章,这里有一些额外的信息。由于应用程序引擎标准环境
不支持大查询客户端库
,因此与大查询服务
通信的一种方式是使用谷歌客户端
为了澄清这一点,以下是使用GoogleAppClient
的步骤
Oauth2client
和GoogleAppClient
导入模块:
from googleapiclient.discovery import build
from oauth2client.client import GoogleCredentials
build('bigquery', 'v2', credentials=GoogleCredentials.get_application_default(), cache_discovery=False)
row_to_stream = {'keys':keys, 'f1':row['f1'], 'f2':row['f2'], 'ctr':row['ctr'], 'position':row['position']}
insert_all_data = {
"kind": "bigquery#tableDataInsertAllRequest",
"skipInvaliedRows": True,
"ignoreUnknownValues": True,
'rows':[{
'insertId': str(uuid.uuid4()),
'json': row_to_stream,
}]
}
build('bigquery', 'v2', cache_discovery=False).tabledata().insertAll(
projectId=projectid,
datasetId=dataset_id,
tableId=tableid,
body=insert_all_data).execute(num_retries=5)
希望这是有帮助的 潜在相关(您可能已在本地系统上安装了它,但未安装在应用程序中):能否提供有关AppEngine设置的更多信息?您是在灵活的还是标准的环境中?您的配置文件是什么样子的?当您在本地测试时,您是直接运行应用程序还是通过AppEngine SDK开发服务器运行应用程序?您好@ChrisThompson我在标准环境及其Python 2.7中。它是同一个文件,我在本地运行时没有更改它。我没有运行App Engine SDK开发服务器,我正在部署应用程序live。嗨@DanCornilescu我已经看过那篇文章,我也在那里安装了库,但它仍然给我相同的错误显示准确的回溯和相关代码。欢迎光临!还有一个步骤可以把这个从“几乎”的答案变成一个很好的答案:请包含问题报告中的相关信息。这个问题可以在任何时候被删除,这将剥夺你当前文章对未来读者的价值。如果你能包括一个特定的策略,将(或可能)解决提问者的问题,那就更好了!这令人困惑。如果库仍然不受支持,为什么文档中包含示例?我想这个库可以从Google计算引擎VM中使用。
row_to_stream = {'keys':keys, 'f1':row['f1'], 'f2':row['f2'], 'ctr':row['ctr'], 'position':row['position']}
insert_all_data = {
"kind": "bigquery#tableDataInsertAllRequest",
"skipInvaliedRows": True,
"ignoreUnknownValues": True,
'rows':[{
'insertId': str(uuid.uuid4()),
'json': row_to_stream,
}]
}
build('bigquery', 'v2', cache_discovery=False).tabledata().insertAll(
projectId=projectid,
datasetId=dataset_id,
tableId=tableid,
body=insert_all_data).execute(num_retries=5)