首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Pyinstaller中包含Google API JSON凭证文件?

如何在Pyinstaller中包含Google API JSON凭证文件?
EN

Stack Overflow用户
提问于 2018-01-25 12:28:58
回答 1查看 1.3K关注 0票数 2

这里是我的第一个问题。我是个自学成才的业余爱好者。我知道这可能是一个愚蠢的问题,但我搜索了很多天也找不到任何信息。

我正在制作一个应用程序来读取谷歌电子表格中的数据使用谷歌API,然后输出的PDF文件与一个很好的图片预先格式化布局使用PYFPDF。它在我的Python3.5.2 + Pycharm + Mac OSX环境下的计算机上运行没有任何问题。

我的应用是从获取访问google API的凭据开始的。

代码语言:javascript
复制
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('my_app_creds.json', scope)
client = gspread.authorize(creds)

和my_app_creds.json文件如下所示:

代码语言:javascript
复制
{
  "type": "service_account",
  "project_id": "my_app",
  "private_key_id": "1234567890",
  "private_key": "-----BEGIN PRIVATE KEY-----\nVERY_LONG_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "my_email@my_app.iam.gserviceaccount.com",
  "client_id": "0987654321",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my_app.iam.gserviceaccount.com"
}

当我使用pyinstaller编译包以在-F (一个文件夹)模式下生成可执行文件时,出现了错误。应用程序文件夹已成功创建,并正确位于“dist”文件夹中。但是当我试图执行这个文件时,它抛出了错误:

代码语言:javascript
复制
FileNotFoundError: [Errno 2] No such file or directory: 'my_app_creds.json'
[24713] Failed to execute script my_app

我已经将其包含在a.datas的.spec文件中,并且我使用的命令与pyinstaller文档中的命令相同:

代码语言:javascript
复制
pyinstaller my_app.spec

my_app.spec包含“找不到”.json文件

代码语言:javascript
复制
a = Analysis(['my_app.py'],
             pathex=['/Users/gungpetrucci/PycharmProjects/myapp'],
             binaries=[],
             datas=[('my_app_creds.json', '.')],

我验证my_app_creds.json与'dist/my_app‘中的可执行文件位于同一文件夹中。我不知道为什么可执行文件找不到它?

当我试图搜索论坛时,它似乎对我来说不清楚:

我不确定这和_MEIPASS有什么关系?但我认为在pyinstaller?

  • Since中只使用-F文件模式的_MEIPASS将是一个问题编译的应用程序永远不会运行通过证书的过程,它永远不会进入图像处理过程。我想知道应用程序是否可以在子文件夹中找到.png图片(在编译之前)?如何将整个图像文件夹包含到dist包中并使其可访问?

请帮帮我..

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 01:57:35

我在我的一个项目中遇到了同样的问题。我使用了以下变通方法-

  1. 从“my_app_creds.json”创建一个目录字典:

app_creds_dictionary =<粘贴json文件内容包括{}>

  • 使用"from_json_keyfile_dict()“函数创建凭证,而不是文件:

  • 现在因为这是你的ServiceAccountCredentials.from_json_keyfile_dict(app_creds_dictionary,文件本身的一部分,所以不需要担心粘贴/维护json文件的副本。即使是以这种方式创建的.exe也适用于我!

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48435699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档