![](/img/trans.png)
[英]AttributeError: module 'dis' has no attribute '_unpack_opargs' While Building Python 3.6 executable using CX_FREEZE
[英]Python, AttributeError: module 'google.cloud.bigquery' has no attribute 'Client' after cx_Freeze build
我正在尝试使用 cx_Freeze 创建脚本的可执行文件,该脚本从同一文件夹加载 .sql 查询,在 BigQuery DB 上执行它并返回检索到的数据的 .csv。
This is what the 'conda list' command gives me:
google-api-core 1.1.0 py_0 conda-forge
google-auth 1.6.2 py_0 conda-forge
google-cloud-bigquery 1.8.1 py_0 conda-forge
google-cloud-core 0.28.1 py_0 conda-forge
google-resumable-media 0.3.1 py_0 conda-forge
googleapis-common-protos 1.5.5 py_0 conda-forge
脚本在第一行崩溃(脚本中指定了 KEY 和 PROJECT_ID,但出于安全原因未粘贴)
from google.cloud import bigquery
client = bigquery.Client.from_service_account_json(KEY, project=PROJECT_ID)
我的 cx_Freeze 的 setup.py 看起来像这样:
from cx_Freeze import setup, Executable
setup(name='output_script', executables = [Executable("my_script.py")], version="1.0.0",
options={
"build exe":{"packages":["google.cloud.bigquery, google.cloud.bigquery.client"]}})
构建成功执行,但是当我在构建文件夹中运行 my_script.exe 时,出现以下错误:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
module.run()
File "C:\ProgramData\Anaconda3\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
exec(code, m.__dict__)
File "my_script.py", line 15, in <module>
File "my_script.py", line 7, in queryBigQ
AttributeError: module 'google.cloud.bigquery' has no attribute 'Client'
尝试重新安装和更新所有 Google 软件包,但没有成功。 任何指针将不胜感激。
您是否尝试在冻结脚本之前成功运行脚本?
看起来您的本地开发环境缺少 bigquery 库。 确保您创建了一个virtualenv并在其中安装了 bigquery 库。
使用简单的脚本测试与 BigQuery 的连接:
from google.cloud import bigquery
client = bigquery.Client()
QUERY = (
'SELECT * FROM `[PROJECT_ID].[BQ_INSTANCE].[BQ_TABLE]`'
)
query_job = client.query(QUERY)
rows = query_job.result()
for row in rows:
print(row)
试试
from google.cloud.bigquery.client import Client
client = Client.from_service_account_json(KEY, project=PROJECT_ID)
或者可能
from google.cloud.bigquery import Client
client = Client.from_service_account_json(KEY, project=PROJECT_ID)
在你的主脚本中。
还尝试将setup.py
脚本中的options
参数替换为
options={"build exe": {"packages": ["google"]}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.