【问题标题】:Streamlit distribution not found in pyinstaller executable program在 pyinstaller 可执行程序中找不到 Streamlit 分发
【发布时间】:2020-06-13 14:54:06
【问题描述】:

我制作了一个流线型应用程序作为预测程序的前端,然后我创建了一个 pyinstaller 可执行文件来运行该应用程序。当我运行可执行文件时出现问题,我收到以下错误:pkg_resources.DistributionNotFound: The 'streamlit' distribution was not found and is required by the application with this traceback:

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

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

如果我可能遗漏了任何有助于解决此问题的详细信息,请告诉我。

【问题讨论】:

  • 我不确定它能否解决您的问题。 (在我的情况下,它得到另一个错误大声笑:()。在...\python38\Lib\site-packages\streamlit\__init__.py中找到变量__version__并将其值更改为流光版本(检查它,在.pyimport streamlit ; print(streamlit.__version_)-> str)(我没有替换_pkg_resources.get_distribution("streamlit").version,只是表扬了它)

标签: python pyinstaller streamlit


【解决方案1】:

看来您需要添加一个名为hook-streamlit.pyhook 文件,其内容如下

from PyInstaller.utils.hooks import copy_metadata

datas = copy_metadata('streamlit')

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

如果你把钩子文件和你的python脚本放在同一个目录下,你可以像这样指定它

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

【讨论】:

  • 感谢您的回答。现在到了关键点,它不会抱怨缺少 streamlit,但是在启动 exe 时它会说:“无法执行脚本 main”
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 2019-11-12
相关资源
最近更新 更多