繁体   English   中英

导入 hydralit 时出错:“ModuleNotFoundError: No module named 'streamlit.report_thread'”

[英]Error importing hydralit: "ModuleNotFoundError: No module named 'streamlit.report_thread'"

我安装了 Hydralit,但是当我尝试导入时出现以下错误:“ModuleNotFoundError: No module named 'streamlit.report_thread'”。 有趣的是,我可以导入和使用 hydralit_components。

使用的版本:

hydralit >=1.0.9
hydralit_components >=1.0.4
streamlit >=0.89
python ==3.8.10

完全错误:

Python 3.8.10 (default, Nov 26 2021, 20:14:08) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hydralit
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/lorena/.local/lib/python3.8/site-packages/hydralit/__init__.py", line 1, in <module>
    from hydralit.hydra_app import HydraApp
  File "/home/lorena/.local/lib/python3.8/site-packages/hydralit/hydra_app.py", line 5, in <module>
    from hydralit.sessionstate import SessionState
  File "/home/lorena/.local/lib/python3.8/site-packages/hydralit/sessionstate.py", line 1, in <module>
    import streamlit.report_thread as ReportThread
ModuleNotFoundError: No module named 'streamlit.report_thread'

我能够通过更换解决我的问题 go

from streamlit.report_thread import add_report_ctx

from streamlit.script_run_context import add_script_run_ctx

(当然,将add_script_run_ctx add_report_ctx

然而,我在streamlit讨论页面上看到了关于这个问题的问答,他们说这个问题是1.4引入的,要回滚到1.3。 所以我不确定我的解决方法可能会出现什么其他问题。 但是我能够使导入错误消失,并且一个非常快速的测试表明它有效。

解决方案是更新到 Hydralit 版本 1.0.12,因为 Streamlit 1.40 的问题已在上一个版本中修复。 pip install -U hydralit应该解决这个问题。

除了用户@Phil 评论的内容之外,此更改还对我进行了以下操作:

我在sessionstate.py脚本中更改了 hydralit 的package的代码。

如果您使用的是 virtualenv,go 到 your-virtualenv-name/lib/pythonx.y/site-packages/hydralit/sessionstate.py。

如果您没有使用虚拟环境,请找到您的 package 安装在哪里并在那里进行更改。

sessionstate.py文件的顶部,我们更改:

import streamlit
st_ver = int(streamlit.__version__.replace('.',''))

if st_ver < 140:
    import streamlit.report_thread as ReportThread
    from streamlit.server.server import Server
else:
    from streamlit.script_run_context import get_script_run_ctx    # Line to change

和:

import streamlit
st_ver = int(streamlit.__version__.replace('.',''))

if st_ver < 140:
    import streamlit.report_thread as ReportThread
    from streamlit.server.server import Server
else:
    from streamlit.scriptrunner import get_script_run_ctx     # Changed line

这解决了我导入 hydralit 的问题。

软件包版本:

流光=1.9.0
HydraLit=1.0.12

希望这对其他人有帮助。

Hydralit 已更新到版本 1.0.13,现在支持 Streamlit >=1.9。

在您的终端中运行以下代码应该可以工作:

python3 -m pip install hydralit

更新的 Streamlit 版本(最高并包括 1.12)的更新答案已在此处共享: https://stackoverflow.com/a/73718031/13804773

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM