【发布时间】:2018-06-04 19:54:48
【问题描述】:
在本地开发应用程序引擎服务器(和生产应用程序引擎)上,我想运行一个包含大查询相关代码的脚本,但出现错误。我已经访问了 stackoverflow 中与此错误相关的所有答案,但没有找到任何可行的方法。以下是发生的代码和错误。提前感谢您的宝贵时间。
代码
#!/usr/bin/python
from google.cloud import bigquery
client = bigquery.Client('myproject')
query = '(SELECT *FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY tb1.user_id ORDER BY tb1.timestamp DESC) AS RowNo FROM `mytable` tb1) x WHERE x.RowNo = 1)'
job_config = bigquery.QueryJobConfig()
job_config.allow_large_results = True
job_config.destination = dest_table_ref
job_config.write_disposition = 'WRITE_TRUNCATE'
query_job = client.query(query, job_config=job_config)
当我点击 url (http://myproject:8080/cronscript) 时出现以下错误
错误
文件“/home/username/src/project-name/python_reporting-2017-12-15-10-37/cronscript.py”,第 3 行,在 从 google.cloud 导入 bigquery 文件“/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py”,第 1132 行,在 load_module raise ImportError('No module named %s' % fullname) ImportError:没有名为 google.cloud.bigquery 的模块
但是,当我通过键入 python 打开 python shell 然后如果我输入
从 google.cloud 导入 bigquery
它工作正常。 如果我运行 python cronscript.py 它也会正确执行 $ python cronscript.py 完毕 $
仅当我在执行 dev_appserver.py app.yaml 后从本地应用服务器执行此操作时 我收到上述错误。
我已经尝试过的一切
1) sudo pip install --upgrade google-cloud-bigquery
2) my requirements.txt look like
google-api-python-client
google-cloud
3) pip install -t lib/ requirements.txt
4) from google.appengine.ext import vendor
vendor.add('lib')
5) from __future__ import absolute_import
仍未解决。
【问题讨论】:
-
使用本地开发服务器或生产环境(App Engine)运行时是否提示错误?您使用的是 AppEngine Flex 还是 Standard?你运行的是哪个 Python 版本?
-
在服务器、云外壳测试服务器和生产应用程序引擎上都出现此错误
-
我不确定是否仍然如此,但在某一时刻,Google python 客户端库存在命名冲突(非常令人沮丧!)。看到这个问题:stackoverflow.com/questions/41399303/…
-
当我输入命令时它成功执行,例如蟒蛇 cronscript.py 。但是通过服务器调用(即myproject:8080/cronscript)它会抛出上述错误
标签: python-2.7 google-app-engine google-bigquery importerror