使用google api client lib的程序的pyinstaller单个exe

时间:2015-04-08 15:08:14

标签: python-2.7 pyinstaller google-api-python-client

我有一个python程序,我在过去使用pyinstaller成功打包为单个exe。最近我添加了使用google api python客户端(https://developers.google.com/api-client-library/python/)的新功能。我试图制作新版本的新单个exe包,但它无法运行。

我启用调试和控制台,最初的问题是它没有拿起oauth lib。我通过将以下内容添加到我的spec文件中来解决这个问题:

hiddenimports=['googleapiclient', 'apiclient']

当我建立时,我可以看到:

53092 INFO: Hidden import 'googleapiclient' has been found otherwise
53093 INFO: Hidden import 'apiclient' has been found otherwise

但是,现在当我运行重建的exe时,我会在退出之前收到以下错误:

pkg_resources.DistributionNotFound: google-api-python-client

我看不到任何对此的引用,我不确定如何强制它与exe打包。

我认为我不能成为唯一一个想要打包使用谷歌api的python程序的人,但我在很多时间与我的朋友google找不到任何帮助...

任何提示?

3 个答案:

答案 0 :(得分:1)

许多人有相同的问题,但我找不到任何答案

尝试这种方式

  1. 找到您的项目的网站包
  2. 输入Pyinstaller /挂钩,然后找到hokk-google.api_core.py
  3. 添加行(编辑行)数据+ = copy_metadata('google-api-python-client')

示例

from PyInstaller.utils.hooks import copy_metadata datas = copy_metadata('google-api-core') datas += copy_metadata('google-api-python-client')

  1. 隐藏pyinstaller并导入google-api-python-client

pyinstaller-隐藏导入google-api-python-client

  1. 可以避免错误 pkg_resources.DistributionNotFound:google-api-python-client

答案 1 :(得分:0)

在我从使用pip切换到easy_install以安装google-api-python-client软件包之后,我能够深入研究这个问题。手动安装鸡蛋文件给了我更简洁的测试方法。

然后我开始使用pyinstaller构建--onefile选项,这样我就可以开始搞乱使用我的程序打包的egg文件了。最后我发现我的问题源于我正在使用Pandas和Google API。

Here's the relevant Pandas bug on github.

要解决这个问题,我必须更新我的Pandas版本。

我确实发现,如果我转移到最新版本的Pandas(1.6.0),我遇到了一个新问题,因为它导入了dateutil,导致查找zoneinfo文件时遇到问题。我已经登陆了Pandas 1.5.1并且一切正常。

答案 2 :(得分:0)

您还可以使用以下方法添加站点包:

--add-data "path_to_your_package:package_name(e.g googleapiclient)"