我制作了一个 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.py
的 hook
文件,其中包含以下内容
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/