我有一个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找不到任何帮助...
任何提示?
答案 0 :(得分:1)
许多人有相同的问题,但我找不到任何答案
尝试这种方式
示例
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata('google-api-core')
datas += copy_metadata('google-api-python-client')
pyinstaller-隐藏导入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)"