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

VS Code中IPython脚本使用# %%运行单元格时出现会话/行号不唯一错误及代码冻结问题求助

解决VS Code中IPython单元格运行时的Session历史冲突问题

我太懂这种随机报错又冻结的痛苦了!之前在VS Code里用# %%分割单元格跑Python脚本时,也频繁碰到这个Session/line number was not unique in database的错误,折腾了好一阵才找到几个靠谱的解决办法,你可以挨个试试:

1. 清理IPython历史数据库(最常用的解决办法)

这个错误大概率是IPython的历史记录数据库损坏或者冲突了。你可以直接找到这个数据库文件并删除/重命名:

  • Windows路径:%USERPROFILE%\.ipython\profile_default\history.sqlite
  • macOS/Linux路径:~/.ipython/profile_default/history.sqlite

删掉之后重启VS Code,再重新运行单元格,IPython会自动生成新的干净数据库,大概率能解决问题。

2. 临时禁用IPython历史记录

如果清理数据库后还是偶尔出现,可以直接禁用历史记录功能,避免数据库冲突:

  • 方法一:在VS Code设置里搜索Python > Data Science: IPython Kernel Args,添加参数--no-history
  • 方法二:在脚本的第一个单元格开头加入这段代码:
from IPython import get_ipython
ip = get_ipython()
ip.run_line_magic('config', 'HistoryManager.enabled = False')

3. 更新所有相关组件

旧版本的VS Code、Python扩展或者Jupyter扩展可能存在兼容性bug,导致Session冲突:

  • 把VS Code升级到最新版本
  • 在扩展商店里更新Python和Jupyter扩展
  • 同时确保你的IPython是最新版:pip install --upgrade ipython

4. 切换IPython内核版本

有时候是特定版本的IPython有问题,你可以试试切换到一个稳定版本,比如:

# 安装指定稳定版
pip install ipython==8.12.0

安装完成后重启VS Code,选择新的内核运行脚本。

5. 检查单元格代码的隐性冲突

如果你的脚本里有多个单元格操作同一个全局变量,或者用到了多线程/多进程代码,可能会干扰IPython的Session追踪:

  • 尝试把复杂的单元格拆分成更小的单元,减少全局变量的跨单元格使用
  • 可以在每个单元格开头加入%reset -f(注意:会清空所有全局变量,谨慎使用)来隔离单元格环境

如果以上方法都不行,你可以试试创建一个全新的VS Code工作区,把脚本复制进去再运行,排除旧工作区设置的干扰。

内容的提问来源于stack exchange,提问作者Carlos Mougan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:02:31