必须安装并启用Jupyter扩展,且Shift+Enter仅在.py文件中按行或# %%单元格生效;若未安装扩展、解释器未选对、文件非.py后缀、路径含中文或空格,或未勾选python.dataScience.sendSelectionToInteractiveWindow设置,代码将无法进入交互式窗口。

必须装 Jupyter 扩展,且 Shift+Enter 只在 .py 文件中按行/单元格生效;不满足任一条件,选中代码根本不会进交互式窗口。
为什么 Shift+Enter 没反应或弹出新 .py 文件
这不是快捷键没绑定,而是 VSCode 交互式窗口压根没启动成功:
-
Jupyter扩展未安装或被禁用 → 去 Extensions 商店搜 “Jupyter”,确保已启用 - Python 解释器未选对:按
Ctrl+Shift+P输入Python: Select Interpreter,选一个已装ipykernel的环境(比如venv里执行过python -m pip install ipykernel) - 当前文件不是
.py后缀 →.txt、.md或无后缀文件,Shift+Enter会静默失败或新建空.py文件 - 文件路径含中文或过多空格 → 临时移到
C:\temp\test.py或~/tmp/test.py测试是否内核启动失败
# %% 单元格标记为什么不起作用
# %% 是让多行代码作为独立单元执行的关键,但它对格式极其敏感:
- 必须独占一行,且
#前不能有空格:#%%或# %%✅,# %%❌ - 不能跟在语句后面:
x = 1 # %%❌,注释必须单独成行 - 只在
.py文件中识别;如果以.ipynb方式打开,# %%完全被忽略 - 某些 linter(如
pylint)会报# %%是无效注释 → 可在.pylintrc加disable=invalid-name,不影响执行
如何让选中代码真正进交互式窗口,而不是终端
默认行为取决于设置,必须显式开启“发送到交互窗口”:
- 打开 VSCode 设置(
Ctrl+,),搜索python.dataScience.sendSelectionToInteractiveWindow - 勾选该选项 → 之后选中任意代码 +
Shift+Enter就会发到右侧Python Interactive窗口 - 如果不勾选,
Shift+Enter默认走终端(Terminal),变量不保留、上下文不延续 - 右键选中代码 → 选择
Run Selection in Python Interactive Window,是更直接的触发方式
变量不共享、结果“消失”的真实原因
你以为在同一个窗口里执行,其实可能跨了多个内核进程:
- 每次新开交互式窗口,默认启一个全新内核 →
df = pd.read_csv(...)在窗口 A 定义,在窗口 B 里print(df)会报NameError - 右键点击窗口右上角 kernel 名称(如
Python 3.11)→Change Kernel → Existing…,选一个正在运行的内核 - 更稳的做法:终端执行
jupyter kernel install --user --name myenv --display-name "My Env",再通过Python: Select Interpreter选这个 kernel,后续所有窗口默认复用 - 注意:不同 Python 版本的内核无法互通,
3.9内核定义的变量在3.11窗口里不可见
真正麻烦的不是怎么把代码送进去,而是搞清你点的那一下,到底往哪个进程、哪块内存、哪份命名空间里写了东西——尤其当你同时开着 test.py、analysis.ipynb 和一个终端里的 ipython 时。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











