【发布时间】:2019-11-29 06:33:48
【问题描述】:
我无法运行执行大查询的 python 程序。 我的python版本:3.6.0 我的点子版本:19.3.1
Traceback (most recent call last):
File "app.py", line 2, in <module>
from bqservice import query_service
File "C:\work\python-bigquery\bqservice\query_service.py", line 1, in <module>
from google.cloud import bigquery
File "C:\work\python-bigquery\env\lib\site-packages\google\cloud\bigquery\__init__.py", line 35, in <module>
from google.cloud.bigquery.client import Client
File "C:\work\python-bigquery\env\lib\site-packages\google\cloud\bigquery\client.py", line 50, in <module>
import google.cloud._helpers
File "C:\work\python-bigquery\env\lib\site-packages\google\cloud\_helpers.py", line 33, in <module>
from google.protobuf import duration_pb2
File "C:\work\python-bigquery\env\lib\site-packages\google\protobuf\duration_pb2.py", line 5, in <module>
from google.protobuf import descriptor as _descriptor
File "C:\work\python-bigquery\env\lib\site-packages\google\protobuf\descriptor.py", line 47, in <module>
from google.protobuf.pyext import _message
ImportError: DLL load failed: The specified procedure could not be found.
但是当我将其 dockerize 并将其作为任何服务(如云运行等)运行时,相同的代码运行良好。
我已转帖:ImportError: DLL load failed: The specified module could not be found 但它没有工作
这是我的代码:
from flask import Flask, request, jsonify
from bqservice import query_service
# Init App
app = Flask(__name__)
@app.route('/', methods=['GET'])
def home():
return "Home page"
@app.route('/match/<id>', methods=['GET'])
def get_a_project(id):
match_summary = query_service.get_match_details(id)
return match_summary
# This is for debug mode on
if __name__ == '__main__':
app.run( port=8080, debug=True)
我的要求.txt
cachetools==3.1.1
certifi==2019.9.11
chardet==3.0.4
Click==7.0
Flask==1.1.1
google-api-core==1.14.3
google-auth==1.7.1
google-cloud-bigquery==1.22.0
google-cloud-core==1.0.3
google-resumable-media==0.5.0
googleapis-common-protos==1.6.0
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
protobuf==3.11.0
pyasn1==0.4.8
pyasn1-modules==0.2.7
pytz==2019.3
requests==2.22.0
rsa==4.0
six==1.13.0
urllib3==1.25.7
Werkzeug==0.16.0
这是由 pip install 填充的依赖项,因为我只添加了 Flask 和 google-bigquery
我的道:
from google.cloud import bigquery
from os import environ
from baseball import matches
def get_match_details(gameId):
client = bigquery.Client()
query_job = client.query("select * from `bigquery-public-data.baseball.schedules` where gameid= '"+gameId+"'")
results = query_job.result() # Waits for job to complete.
for row in results: # API request - fetches results
requested_match = matches.Matches(row["homeTeamName"], row["awayTeamName"], row["dayNight"], row["startTime"], row["attendance"], row["duration"])
return requested_match.get_details()
有什么帮助吗?
【问题讨论】:
-
'bqservice' 是你定义的模块吗?我无法找到有关它的文档。如果是你定义的,能不能也分享一下?
-
是的,bqservice 是这里的一个包。该错误与我的本地环境更相关。因为当我也克隆了谷歌快速入门模块时,它失败并出现同样的错误。如果我不能在本地运行它,那么每次我推送到 CI 管道以对它进行 dockerize 和测试时,都要进行测试是一项艰巨的任务。