You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PyCharm中运行含本地包的Streamlit代码的两类报错?

解决方案:Streamlit运行与模块导入问题

一、修复ModuleNotFoundError: No module named 'demo'

用streamlit run命令启动时,Python解释器的搜索路径默认不包含项目根目录,导致找不到demo包。可以通过以下方法解决:

  • 方法1:临时添加项目根目录到Python路径
    在终端执行streamlit run前,先把项目根目录加入PYTHONPATH环境变量:

    • Linux/macOS:
      export PYTHONPATH="/path/to/your/project:$PYTHONPATH"
      streamlit run gui/main.py
      
    • Windows:
      set PYTHONPATH=C:\path\to\your\project;%PYTHONPATH%
      streamlit run gui/main.py
      

    替换路径为你的实际项目根目录,注意gui/main.py要和文件实际位置对应。

  • 方法2:在代码中手动添加路径
    在gui/main.py最顶部加入以下代码,强制将项目根目录加入Python搜索路径:

    import sys
    from pathlib import Path
    
    # 定位项目根目录(gui目录的上一级即为根目录)
    project_root = Path(__file__).parent.parent
    sys.path.append(str(project_root))
    

    这样无论从哪个路径启动,都能正确找到demo包。

  • 方法3:用PyCharm内置终端运行
    PyCharm的终端会自动把项目根目录加入Python搜索路径,直接在PyCharm终端执行streamlit run gui/main.py即可,无需额外配置。

二、修复AttributeError: st.session_state has no attribute "messages"

这个错误是因为代码直接访问了st.session_state.messages,但该变量从未被初始化。Streamlit的session_state变量必须先定义才能使用,解决方式如下:

在第一次使用st.session_state.messages的代码前,添加初始化逻辑:

import streamlit as st

# 初始化messages变量,不存在则创建
if "messages" not in st.session_state:
    st.session_state.messages = []  # 可根据业务需求初始化为字典等其他类型

点击PyCharm的Run按钮运行时,Streamlit的会话初始化流程和命令行启动有差异,因此必须显式初始化所有要用到的session_state变量,避免出现找不到属性的错误。

内容的提问来源于stack exchange,提问作者Adit Desai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:15:21