PyInstaller文件无法执行脚本DistributionNotFound

2024-10-01 15:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用PyInstaller将python文件转换为可执行文件。程序使用Google Cloud Translate API在语言之间翻译给定的文本。在终端中运行python quicktrans.py时,程序运行良好。然后我运行pyinstaller quicktrans.py,在SHIFT+右键单击可执行文件所在的目录,并在终端中运行.exe文件。这是它吐出的回溯(注意这不是整个回溯,因为它有点长):

File "c:\users\kalab\realpython\quicktrans\google\cloud\connection.py", line 31, in <module>
    get_distribution('google-cloud-core').version)
  File "site-packages\pkg_resources\__init__.py", line 559, in get_distribution
  File "site-packages\pkg_resources\__init__.py", line 433, in get_provider
  File "site-packages\pkg_resources\__init__.py", line 970, in require
  File "site-packages\pkg_resources\__init__.py", line 856, in resolve
pkg_resources.DistributionNotFound: The 'google-cloud-core' distribution was not found and is required by the application
Failed to execute script quicktrans

我已经试着去调查这件事,但有些原因却让我犯了个小错误。我已经花了好几个小时想把它修好,但没什么好运气的。 注意:要按照documentation安装其客户端库,必须运行pip install --upgrade google-cloud-translate

我认为这可能与有关,因为我使用的上一个应用程序处理的是Facebook客户机模块,您只需执行pip install facebook-sdk,PyInstaller生成的可执行文件运行时没有问题。在

如果要检查程序中使用的代码,it's hosted on my GitHub

感谢所有帮助我的人!在


Tags: inpy可执行文件cloudgetinitpackagesgoogle
3条回答

我的个人解决方案:

  1. 将所有调用更改为get_distribution,返回值为0.21.0
  2. 从导入中删除from pkg_resources import get_distribution

对于包中的所有文件。在

根据我的经验,基于https://github.com/GoogleCloudPlatform/google-cloud-python/issues/1187中的帮助:

  1. Go\Anaconda3\Lib\site packages\PyInstaller\hooks文件夹(如果使用anaconda,则需要在python文件夹下找到它)
  2. 找到钩子谷歌-云.py(如果存在,否则需要创建钩子。在
  3. 写入现有代码,如下所示


    版权所有(c)2017,PyInstaller开发团队。在

    根据GNU通用公共许可证的条款分发,例外情况除外 用于分发引导加载程序。在

    文件中有完整的许可证复制.txt,与此软件一起分发。在


    从PyInstaller.utils.hooks导入副本元数据

    datas=复制元数据('google-cloud-core')

    datas+=复制元数据('google-cloud-translate')

    datas+=复制元数据('google-api-core')


    希望你觉得这个解释有帮助。谢谢您。

这基本上是包装建筑的名称问题。Pyinstaller尝试导入

google.cloud

谷歌云包的名称

gcloud

一。所以你需要为这个名字创建一个钩子文件

C:\Users\\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\PyInstaller\hooks\hook-gcloud.py

文件内容:

from PyInstaller.utils.hooks import copy_metadata

datas = copy_metadata('gcloud')

相关问题 更多 >

    热门问题