我有一个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。如何使其工作。
答案 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文件夹来解决此问题:)
希望这也可以解决您的问题。