VS Code 运行 Python 报错本质是环境配置问题:解释器路径未正确选择、pip 与解释器环境不一致、文件类型或编码设置错误、中文路径引发编码冲突;统一使用 UTF-8 编码、纯英文路径、手动指定解释器可解决 90% 问题。

找不到 Python 解释器或 python 命令未识别
VS Code 运行 Python 时提示 Command 'python' not found 或 Python interpreter not selected,本质是环境路径没对上,不是插件坏了。
- 先在终端运行
which python(macOS/Linux)或where python(Windows),确认系统里真实存在的 Python 路径 - 在 VS Code 中按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入Python: Select Interpreter,手动指向刚才查到的路径,比如/usr/bin/python3或C:\Users\XXX\AppData\Local\Programs\Python\Python311\python.exe - 别依赖
python别名——某些系统默认只有python3;可在设置里搜python.defaultInterpreterPath,直接填绝对路径避免每次重选
ModuleNotFoundError:明明装了包却 import 失败
常见于用 pip install requests 装完,VS Code 还报 No module named 'requests'。根本原因是:VS Code 当前用的 Python 解释器和你装包的环境不一致。
- 检查右下角状态栏显示的 Python 版本路径,和你在终端执行
pip show requests时用的pip是否属于同一环境(比如都是venv里的,或都是全局的) - 如果用了虚拟环境,必须先激活它再装包:
source venv/bin/activate(macOS/Linux)或venv\Scripts\activate(Windows),然后再pip install - VS Code 启动时可能没读取 shell 的环境变量,建议关闭所有窗口,从终端进入项目目录后用
code .启动,确保继承当前 shell 环境
点击「运行」按钮没反应,或输出窗口空白
不是代码卡死,而是 VS Code 根本没触发执行流程——大概率是缺少运行配置或文件没被识别为可执行类型。
功能列表:底层程序与前台页面分离的效果,对页面的修改无需改动任何程序代码。完善的标签系统,支持自定义标签,公用标签,快捷标签,动态标签,静态标签等等,支持标签内的vbs语法,原则上运用这些标签可以制作出任何想要的页面效果。兼容原来的栏目系统,可以很方便的插入一个栏目或者一个栏目组到页面的任何位置。底层模版解析程序具有非常高的效率,稳定性和容错性,即使模版中有错误的标签也不会影响页面的显示。所有的标
- 确认文件后缀正确:
.py文件才能被 Python 插件识别;.txt或无后缀文件即使内容是 Python,也不会响应Run Python File - 检查是否误点了「在终端中运行」但终端被最小化或隐藏了;右键文件 →
Run Python File in Terminal是最稳的方式 - 如果用了 Code Runner 插件,它默认用
python命令,但你设的是python3——需打开设置搜code-runner.executorMap,把"python": "python -u"改成"python": "python3 -u"
中文路径或文件名导致 UnicodeDecodeError 或乱码
尤其 Windows 上,VS Code 终端编码、Python 默认编码、文件保存编码三者不统一,一跑就崩。
- 在 VS Code 设置里搜
files.encoding,设为utf8;再搜terminal.integrated.defaultProfile,确保终端启动的是支持 UTF-8 的 shell(如 Windows 的 PowerShell) - Python 脚本开头加
# -*- coding: utf-8 -*-(虽 3.7+ 已默认,但显式声明更稳妥) - 最彻底的办法:避免中文路径——把项目移到
C:\dev\myproject这类纯英文路径下,很多奇怪错误会自动消失
import sys print(sys.getdefaultencoding()) # 查看 Python 默认编码 print(sys.stdout.encoding) # 查看终端输出编码
路径和编码问题最容易被当成“玄学”,其实只要统一用 UTF-8、避开中文路径、每次确认解释器路径,90% 的“运行失败”就只是配置错位而已。









