page contents

不想装大型 IDE?只靠 VSCode 加插件,搭一套轻量 Python 开发环境

写个接口、跑个脚本、查一段日志,没必要先启动一艘航空母舰。我的 Python 开发环境现在基本就是 VSCode,加几个真正用得上的插件。补全、格式化、调试、虚拟环境都有,启动还快。

attachments-2026-08-4yvzYr8k6a94f2b1a09fb.png

打开一个 Python 项目,代码还没写,IDE 先吃掉两三个 G 内存,索引在右下角转半天,风扇也跟着起飞。

这种场面我不太喜欢。

写个接口、跑个脚本、查一段日志,没必要先启动一艘航空母舰。我的 Python 开发环境现在基本就是 VSCode,加几个真正用得上的插件。补全、格式化、调试、虚拟环境都有,启动还快。

插件别装一堆,装多了 VSCode 一样能被拖慢。我一般只留这几个:

Python

Pylance

Ruff

GitLens

Python 插件负责运行、调试和解释器管理;Pylance 做类型提示和代码补全;Ruff 负责检查和格式化;GitLens 用来看代码是谁改的。最后这个不是必需,但线上代码看到一段奇怪判断时,我通常会顺手查一下提交记录。

装完插件,先别急着写代码。第一件事是给项目建虚拟环境。

mkdir invoice-cleaner
cd invoice-cleaner

python -m venv .venv

Windows 激活:

.venv\Scripts\activate

macOS 或 Linux:

source .venv/bin/activate

然后在 VSCode 里按下 Ctrl+Shift+P,搜索:

Python: Select Interpreter

选中项目里的 .venv。

这一步不能省。很多“终端里能运行,VSCode 里一直报红”的问题,最后查下来都是解释器没选对。你在系统 Python 里装了依赖,编辑器却盯着项目虚拟环境,它当然找不到。

我通常还会在项目下面放一个 .vscode/settings.json:

{
  "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
  "python.analysis.typeCheckingMode": "basic",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.ruff": "explicit",
    "source.organizeImports.ruff": "explicit"
  },
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff"
  },
  "files.exclude": {
    "**/__pycache__": true,
    "**/.pytest_cache": true,
    "**/.ruff_cache": true
  }
}

保存时自动格式化,没用的导入顺手清掉,缓存目录也不在文件树里碍眼。

这里我更愿意用 Ruff,不再同时堆 Flake8、isort、Black 一整套。工具越多,配置越容易互相打架。保存一次文件,三个插件轮流改代码,最后光标都能跳走,这种环境看着专业,用起来很烦。

项目依赖也别全靠记。建一个 pyproject.toml,把 Ruff 的规则放进去:

[tool.ruff]
line-length = 100
target-version = "py311"
exclude = [".venv", "build", "dist"]

[tool.ruff.lint]
select = ["E", "F", "I", "B"]
ignore = ["E501"]

[tool.ruff.format]
quote-style = "double"
indent-style = "space"

配置不用追求大而全。项目刚开始就塞两百条规则,最后大概率是一群人围着格式问题吵,业务 Bug 反而没人看。

写段实际代码试一下。比如从导出的 CSV 里筛出字段不完整的订单:

from __future__ import annotations

import csv
from pathlib import Path

REQUIRED_COLUMNS = ("order_no", "customer_id", "amount")


def find_broken_rows(csv_file: Path) -> list[tuple[int, list[str]]]:
    broken: list[tuple[int, list[str]]] = []

    with csv_file.open("r", encoding="utf-8-sig", newline="") as stream:
        reader = csv.DictReader(stream)

        for line_no, row in enumerate(reader, start=2):
            missing = [
                field
                for field in REQUIRED_COLUMNS
                if not (row.get(field) or "").strip()
            ]
            if missing:
                broken.append((line_no, missing))

    return broken


if __name__ == "__main__":
    source = Path("data/orders.csv")

    for line_no, missing_fields in find_broken_rows(source):
        print(f"第 {line_no} 行缺少字段:{', '.join(missing_fields)}")

这时候类型提示、未使用变量、导入顺序、格式化都应该正常工作。

调试也不用退回 print() 大法。VSCode 左侧打开“运行和调试”,创建 .vscode/launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "调试当前 Python 文件",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true
    }
  ]
}

在代码左侧点一下断点,按 F5,变量值、调用栈、异常位置都能看到。

命令行参数也能直接加:

"args": ["--input", "data/orders.csv"]

我见过不少人装完 VSCode,插件塞了几十个,结果运行代码还要手敲一长串命令。环境不是插件越多越完整,而是常用动作能不能少绕路。

最后再加一个 .gitignore:

.venv/
__pycache__/
.pytest_cache/
.ruff_cache/
.vscode/*.log
*.pyc
.env

.vscode/settings.json 和 launch.json 可以提交到仓库,团队成员拉下来就能用;.env 里如果放了密钥,别手滑一起提交。

VSCode 这套环境不一定比大型 IDE 功能更多,但日常写脚本、接口服务、数据处理任务,基本够用。启动快,配置透明,哪里出问题也比较容易查。

真要做大型项目、重度依赖框架导航,再换专业 IDE 不迟。工具是拿来干活的,不是每次打开项目先陪它热身。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
王昭君
王昭君

216 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 2372 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章