python - 在 pyinstaller 可执行程序中找不到 Streamlit 发行版

标签 python pyinstaller streamlit

我制作了一个 Streamlit 应用程序作为预测程序的前端,然后创建了一个 pyinstaller 可执行文件来运行该应用程序。当我运行可执行文件时,问题出现了,出现以下错误:pkg_resources.DistributionNotFound:未找到“streamlit”发行版,并且应用程序需要该发行版,并带有此回溯:

Traceback (most recent call last):
  File "main.py", line 8, in <module>
  File "<frozen importlib._bootstrap>", line 968, in _find_and_load
  File "<frozen importlib._bootstrap>", line 957, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "/opt/anaconda3/envs/Python35/lib/python3.5/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages/streamlit/__init__.py", line 75, in <module>
  File "site-packages/pkg_resources/__init__.py", line 476, in get_distribution
  File "site-packages/pkg_resources/__init__.py", line 352, in get_provider
  File "site-packages/pkg_resources/__init__.py", line 895, in require
  File "site-packages/pkg_resources/__init__.py", line 781, in resolve

pkg_resources.DistributionNotFound: The 'streamlit' distribution was not found and is required by the application
[48095] Failed to execute script main

该文件是使用以下命令创建的:pyinstaller --onefile -w main.py

这是在 Conda 环境中使用 python 3.5.6 在 macOS Catalina 上设置的

如果我可能错过了任何对此有帮助的细节,请告诉我。

最佳答案

看起来您需要添加一个名为 hook-streamlit.pyhook 文件,其中包含以下内容

from PyInstaller.utils.hooks import copy_metadata

datas = copy_metadata('streamlit')

您还需要将 --additional-hooks-dir 标志传递给 pyinstaller 命令。

如果您已将钩子(Hook)文件放在与 python 脚本相同的目录中,您可以像这样指定它

pyinstaller --onefile --additional-hooks-dir=。 -w main.py

关于python - 在 pyinstaller 可执行程序中找不到 Streamlit 发行版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60469733/

相关文章:

python - pandas 中具有多索引的 groupby 的平均值

python - 使用pyinstaller创建可执行文件时出错

python - Streamlit 按钮更改禁用状态

streamlit - 流式响应线 chatgpt

Python 3.6 : Why does pickle. 转储(nparray)永久增加引用计数?

python - 报告用户 Django 错误报告

python - gethostbyaddr() 在 Python 3 中引发 UnicodeDecodeError

python - Pyinstaller 构建应用程序后设计变得丑陋

python - PyInstaller 和 Pandas

python - Streamlit:如何在缓存中存储变量值