VSCode本身不运行Gradio或Streamlit,仅作为编辑器;必须通过终端手动执行python app.py(Gradio)或streamlit run app.py(Streamlit),并确保Python环境、框架安装及启动命令正确,否则点击运行按钮无响应。

VSCode 本身不运行 Gradio 或 Streamlit,它只是编辑器;真正起作用的是你本地 Python 环境 + 对应框架的启动逻辑。关键不是“VSCode 怎么用它们”,而是“怎么在 VSCode 里高效写、调、发 Gradio/Streamlit 应用”。
如何在 VSCode 中正确启动 Gradio/Streamlit 服务
必须通过终端(Terminal)手动运行命令,VSCode 不会自动帮你启动 Web 服务。常见错误是点了「运行」按钮(▶️)却没反应——因为默认 Python 运行配置只执行脚本,不监听端口。
- 确保已激活正确的 Python 环境:
conda activate myenv或source venv/bin/activate(Linux/macOS),venv\Scripts\activate(Windows) - 安装对应框架:
pip install gradio==4.44.0或pip install streamlit(注意 Streamlit 最新版对某些旧系统有兼容问题,可加--upgrade --force-reinstall) - 启动命令要写对:
- Gradio:
python app.py(前提是app.py末尾有demo.launch()或iface.launch()) - Streamlit:
streamlit run app.py(不能用python app.py,否则报错ModuleNotFoundError: No module named 'streamlit')
- Gradio:
- VSCode 终端默认编码可能为 GBK(Windows),导致中文路径或日志乱码,建议在设置中启用 UTF-8:
"terminal.integrated.defaultProfile.windows": "PowerShell"+ 在 PowerShell 中执行[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
调试时页面不刷新?检查这几个硬性条件
Gradio 和 Streamlit 都支持热重载(hot reload),但不是所有修改都能触发。不是代码改了就一定刷新,得看改的是哪一层。
将小说章节转换为电影分镜剧本。用户上传txt/md/docx文本,AI分析场景、角色、情绪、镜头语言,输出专业分镜脚本。适用于用户提及“分镜”“storyboard”“小说转分镜”“影视改编”“镜头脚本”或需要将小说改编为分镜的场景。
- Gradio 的
launch()必须在文件末尾、且未被条件包裹(比如不能写在if __name__ == "__main__":之外,也不能被try/except捕获后静默吞掉异常) - Streamlit 要求所有 UI 逻辑必须写在
streamlit run启动的主脚本里;如果把st.button()写在独立模块中再 import,热重载不会追踪该模块变更 - VSCode 的文件自动保存(
Files: Auto Save)必须开启,否则改完代码没保存,自然不会触发重载 - Streamlit 默认只监控当前脚本及同目录下
.py文件,若用import utils引入外部模块,需手动加参数:streamlit run app.py --server.fileWatcherType poll
share=True 失败?别怪 VSCode,先查网络和权限
share=True 是 Gradio 提供的公网隧道功能,依赖 ngrok 或 Gradio 自建中继,和 VSCode 完全无关。失败通常是因为环境限制,不是编辑器问题。
- 公司内网或校园网常屏蔽 443/80 端口,
share=True会卡在Connecting to public URL...;此时换用server_name="0.0.0.0"+server_port=7860,再配合内网穿透工具(如 frp)更可控 - Mac 用户升级到 macOS Sequoia 后,系统默认阻止未经公证的网络代理,首次运行
share=True可能弹窗提示“拒绝连接”,需去「系统设置 > 隐私与安全性 > 完全磁盘访问」中给 Terminal 或 VSCode 授权 - Windows 上杀毒软件(尤其 McAfee、360)常拦截 ngrok 进程,表现为控制台无报错但页面打不开;临时关闭实时防护或添加
ngrok到白名单即可 - Streamlit 没有原生
share参数,要用streamlit run app.py --server.port=8501 --server.address=0.0.0.0暴露端口,再自行配反向代理或云服务器端口映射
为什么 Jupyter 中能跑 Gradio,但 VSCode 终端不行?
Jupyter 内核和 VSCode 终端用的不是同一个 Python 解释器,哪怕看起来路径一样,也可能 pip 安装位置不同。
- 在 Jupyter cell 里运行
!which python(macOS/Linux)或where python(Windows),对比 VSCode 终端中执行相同命令的结果 - Jupyter 可能用的是 conda 环境里的 kernel,而 VSCode 终端默认走系统 Python;需在 VSCode 中按
Ctrl+Shift+P→ 输入Python: Select Interpreter,手动选中和 Jupyter 一致的环境 - Gradio 在 Jupyter 中使用
interface.launch(share=True, inbrowser=False)会嵌入 notebook 单元格,但这套机制不适用于普通终端启动,强行复用会导致RuntimeError: asyncio.run() cannot be called from a running event loop - Streamlit 根本不支持在 Jupyter 中运行(会报
Streamlit requires a real browser),所谓“Jupyter 中能跑”其实是用了第三方封装(如streamlit-jupyter),和标准部署流程无关
真正卡住人的从来不是框架语法,而是 Python 环境隔离、进程权限、网络策略这三层隐性依赖。VSCode 只是窗口,背后每个 pip install、每次 streamlit run、每回 share=True,都得对齐这三个层面的状态。

















