运行streamlit项目报ModuleNotFoundError: No module named 'utils.SessionState'如何解决
'utils.SessionState' 模块缺失报错排查解决步骤
报错详情:
触发代码:import utils.SessionState as SessionState
错误提示:ModuleNotFoundError: No module named 'utils.SessionState'
- 确认项目目录完整性
检查traffic_flow_counter-master项目根目录下是否存在utils文件夹,文件夹内是否包含SessionState.py文件,以及utils文件夹根目录是否有__init__.py文件(空文件即可,作用是将文件夹标记为Python可识别的包),缺失任意文件都需要补全对应文件。 - 修正运行命令的工作目录
你的入口文件存放在app子目录下,不要直接进入app文件夹执行运行命令,要回到项目根目录(即traffic_flow_counter-master文件夹),执行命令:streamlit run app/streamlit-app.py
避免Python模块搜索路径匹配不到上层的utils包。 - 适配高版本Streamlit的内置特性
这个报错常见于旧版Streamlit项目,旧版本Streamlit没有内置会话状态管理能力,因此很多项目会自定义SessionState工具类。如果你使用的是0.84及以上版本的Streamlit,可以直接用内置的st.session_state替换原有引用,不需要额外导入utils.SessionState模块。 - 调整导包语法
如果utils文件夹实际存放在app子目录下,将触发报错的导包语句修改为:from utils import SessionState
或者相对导包写法:from .utils import SessionState
内容的提问来源于stack exchange,提问作者kkuz
相关产品推荐
相关产品推荐

