找不到gcloud分发,应用程序需要它-python pyinstaller

时间:2019-07-02 05:54:28

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

我有一个firebase,数据存储在其中。我正在使用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,因此请在spec文件的PyInstaller挂钩中进行更改。但是由于我的错误,我的pyinstaller文件已经在检查gcloud并显示找不到gcloud。如何使其工作。

3 个答案:

答案 0 :(得分:1)

找到了答案。 这是命名问题

在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')

现在创建一个可执行文件,它将非常有用。

答案 1 :(得分:1)

在使用 PyInstaller

转换为 firebase 时,您需要额外的钩子来使用 gcloud.exe

在某个目录下创建一个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 :(得分:0)

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

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

希望这也可以解决您的问题。