【问题标题】:gcloud distribution was not found and is required by the application - python pyinstaller未找到 gcloud 分发,应用程序需要它 - python pyinstaller
【发布时间】:2019-11-12 17:27:41
【问题描述】:

我有一个火力基地,数据存储在那里。我正在使用 python 中的 firebase 模块访问它

代码如下:

from firebase import firebase
firebase = firebase.FirebaseApplication(
    'link to my project in firebase', None)

result = firebase.get('/', None)
print(result)

我的 o/p:

{'name':'steven}

它工作得很好,而且很容易使用。但是当我使用 pyinstaller 将其转换为应用程序时,它显示以下错误。

Traceback (most recent call last):
  File "firebase_connect.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "/home/paulsteven/.local/lib/python3.5/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "firebase/__init__.py", line 16, in <module>
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "/home/paulsteven/.local/lib/python3.5/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "gcloud/__init__.py", line 19, in <module>
  File "pkg_resources/__init__.py", line 481, in get_distribution
  File "pkg_resources/__init__.py", line 357, in get_provider
  File "pkg_resources/__init__.py", line 900, in require
  File "pkg_resources/__init__.py", line 786, in resolve
pkg_resources.DistributionNotFound: The 'gcloud' distribution was not found and is required by the application
[14554] Failed to execute script firebase_connect

我尝试搜索堆栈溢出,但他们指出 google cloud 已更改为 gcloud,因此请在规范文件中的 PyInstaller 挂钩中更改它。但在我的错误中,我的 pyinstaller 文件已经在检查 gcloud 并显示未找到 gcloud。如何使它工作。

【问题讨论】:

    标签: python firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    在使用 PyInstaller

    转换为 .exe 时,您需要额外的钩子才能使用 firebasegcloud

    在某个目录创建一个python文件(*.py)并将其命名为-hook-gcloud.py并在其中写入以下代码-

    from PyInstaller.utils.hooks import copy_metadata
    datas = copy_metadata('gcloud')
    

    现在,在为 pyinstaller 发出命令时,请使用选项 --additional-hooks-dir

    示例 - 如果您新创建的hook-gcloud.py 位于C:\Users\xyz\Hooks 并说您需要将example.py 转换为example.exe,那么您在命令提示符下的命令将是-

    pyinstaller --additional-hooks-dir C:\Users\xyz\Hooks example.py
    

    您可以随时使用其他选项,例如 --onefile

    【讨论】:

      【解决方案2】:

      pkg_resources.DistributionNotFound:未找到“gcloud”分发,应用程序需要该分发 [21369] 无法执行脚本

      我通过将缺少的资源 gcloud 从 Python\Python37\Lib\site-packages 复制粘贴到保存我的 .exe 文件的 dist 文件夹来解决了这个问题 :)

      希望这也能解决您的问题。

      【讨论】:

        【解决方案3】:

        找到答案..这是一个命名问题

        在 Ubuntu 中:

        cd /home/paulsteven/.local/lib/python3.5/site-packages/PyInstaller/hooks/
        vim hook-gcloud.py
        

        将内容改为如下:

        from PyInstaller.utils.hooks import copy_metadata
        
        datas = copy_metadata('gcloud')
        

        现在创建一个可执行文件 - 它会很好用..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-12
          • 1970-01-01
          • 2018-12-25
          • 1970-01-01
          • 2017-09-04
          • 2023-01-26
          • 2021-11-26
          • 2019-10-19
          相关资源
          最近更新 更多