记录一次依赖的坑(2026-09-07)
记录一次依赖的坑(2026-09-07)报错写的是模块名,坑往往在环境里
那天的两件活都不大,但都属于同一类:代码没写错,环境却有缺口。一个是 Streamlit 看板少了 pymysql,一个是本地 workbuddy-delegate 的 wb.py 有两个"改了代码却没更新元数据"的 bug。都不难,但都容易只看表面就修错方向。
一、两个页面挂了Streamlit 看板跑在 8501 端口,页面 5(views.5_market_mood)和页面 14(views.14_new_tokens)直接报 ModuleNotFoundError: pymysql。
看板是给交易系统做可视化的,页面挂了不会影响交易本身,但会影响"看"——而看不了,等于把判断系统状态的眼睛蒙住一只。所以这类问题优先级不高,但不能拖。
二、报错指向模块,坑在环境第一反应很容易是"去改代码、加个 try 兜住"。这是错的。报错已经明确说是缺模块,那就去装模块,而不是改代码绕开它。 尤其当缺的是 pymysql 这种公开的包——绕开它,只会让下一次跑 ...
记录一次代码体检:290 行的 Streamlit(2026-05-28)
记录一次代码体检:290 行的 Streamlit(2026-05-28)自己写的东西,自己最不容易看出问题
那天没写新功能,做了两件更基础的事:给一套自己写的 Streamlit 做代码体检,再把另一个小项目的架构摊开看一遍。都是"回头看"的活,比往前冲更难受,但也更有用。
第一件:给效率分析系统做个体检被体检的是一个 290 行的 Streamlit 应用——效率分析管理系统。结构其实挺清楚,一共七个区块:
页面配置(7-13 行)
样式注入(15-35 行)—— 自定义 CSS,用 unsafe_allow_html
常量定义(37-52 行)—— 硬编码了 D:\work 路径和三个 Excel 文件路径,三组列名
Session State 初始化(54-69 行)—— 把三个表读进 session_state
工具函数(71-98 行)—— DataFrame 转 Excel bytes、校验列名后导入
主界面三个 Tab(106-282 行)—— 每个 Tab 都是"导入/导出/在线编辑"
页脚(284-28 ...