Python技术迷

Windows上写 Python 代码的王炸组合!

很多人跟我吐槽:白天在公司 Linux 服务器上一顿操作猛如虎,晚上回到家,对着 Windows 笔记本,突然就不知道怎么愉快地写 Python 了——要么一堆环境冲突,要么中文路径把你整破防,要么 VS Code 跟 Python 找不到对象,互相不认识。

今天就当我在你旁边,帮你把 Windows 上那套 “写 Python 的王炸组合” 摆明白,整完你在家写代码的体验不比公司差,甚至更爽。

一、先把地基打好:Windows 上装 Python 的正确姿势

别急着装各种 IDE,先把 Python 自己装对,不然后面全是坑。

比较稳妥的方式是去官网装:

  1. 打开浏览器搜 python download,进官网;
  2. 选一个 3.10+ 的版本(比如 3.10、3.11 都行);
  3. 安装的时候一定要勾:Add python.exe to PATH,不勾后面命令行全是眼泪。

装完之后,打开「终端」验证一下。

Windows 你可以用:

  • 经典命令行:cmd
  • 或者 PowerShell
  • 或者更现代的 Windows Terminal(推荐)

随便开一个,敲:

python --version
# 或者
py --version

如果能看到版本号,比如 Python 3.11.3,说明 OK 了。

后面命令我统一用 py,这是 Windows 自带的 Python 启动器,识别多个版本的时候比 python 稳多了。

二、日常写脚本的王炸:VS Code + venv + Windows Terminal

这个组合适合 90% 的人:写小工具、爬虫、脚本、练习 LeetCode、写点自动化,全够用,而且很轻。

1)准备 VS Code 和插件

VS Code 自己搜一下装好,装完打开,顺手装三个插件:

  • Python(微软官方那个)
  • Pylance(代码提示补全)
  • Jupyter(将来直接在 VS Code 里跑 Notebook 用)

装完 VS Code,你可以新建一个目录,比如放在 D:\code\mypython,中文路径尽量少用,省心。

2)给项目整一个虚拟环境(venv)

不要把依赖全装到全局,那是以后环境冲突的起点。

在项目文件夹里右键「在终端中打开」,敲:

# 创建虚拟环境,名字随便,常见 .venv 或 venv
py -m venv .venv

执行完之后,目录里会多出一个 .venv 文件夹。

激活虚拟环境:

  • PowerShell:
.\.venv\Scripts\Activate.ps1
  • cmd:
.\.venv\Scripts\activate.bat

你看到前面多了个 (.venv) 这样的前缀,就说明进到这个环境里了。

这时候再敲:

python --version
pip list

就都是在这个项目自己的「小世界」里操作了。

3)VS Code 认这个虚拟环境

在 VS Code 里按 Ctrl+Shift+P,搜 Python: Select Interpreter,选那个带 .venv 路径的解释器就行。

之后你在这个项目里运行 Python,都会用这个虚拟环境。

4)写个最简单的小脚本试试

比如来个日志整理脚本,把某个目录里所有 .log 文件名字打印出来:

# file: list_logs.py
from pathlib import Path

deflist_logs(log_dir: str) -> None:
    base = Path(log_dir)
ifnot base.exists():
        print(f"目录不存在:{base}")
return

for path in base.rglob("*.log"):
        print(path)

if __name__ == "__main__":
# 注意 Windows 用 r"" 可以防止反斜杠转义
    log_dir = r"D:\logs"
    list_logs(log_dir)

终端里运行:

(.venv) D:\code\mypython> python list_logs.py

能正常跑起来,说明这一套组合基本打通了。

三、依赖管理一个要点:pip 换国内源 + requirements

Windows 上装依赖,有时候网络抽风,一装就是半天。

你可以给 pip 配个国内源(比如清华):

1)一次性配置(推荐)

在 PowerShell 里敲:

mkdir $env:APPDATA\pip -ErrorAction SilentlyContinue
notepad $env:APPDATA\pip\pip.ini

然后在打开的记事本里写:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

保存退出就行了。

2)项目依赖写到 requirements.txt

比如你项目要用 requests、pydantic:

(.venv)> pip install requests pydantic

装完之后把「现在环境里有什么」存一下:

(.venv)> pip freeze > requirements.txt

文件会长这样:

pydantic==2.6.4
requests==2.32.3

下次在别的电脑(或你未来重装系统),只要:

py -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt

整个环境就复活了。

四、写大一点的项目:PyCharm + Conda,更省心

如果你在 Windows 上搞的是「偏数据、偏科学计算」的那种项目:pandas、numpy、pytorch 一堆,PyCharm + Anaconda/Miniconda 这个组合会更舒服一些,主要解决两个问题:

  • 复杂依赖一次装全;
  • 图形化管理解释器和包,不用总记命令。

简单说一下组合方式:

1)装 Miniconda(推荐比 Anaconda 精简) 2)用 conda 新建一个环境,比如:

conda create -n py311 python=3.11
conda activate py311
conda install numpy pandas matplotlib

3)PyCharm 里新建项目的时候,Interpreter 选择「Existing environment」,选你刚才的 conda 环境。

这样以后你在 Windows 上跑各种数据脚本,不用跟各种 C++ 编译器、二进制依赖死磕。

比如来个小脚本统计某个目录下所有 .csv 的行数:

# file: count_csv_lines.py
from pathlib import Path
import pandas as pd

defcount_lines(root: str) -> None:
    base = Path(root)
    total = 0

for csv_file in base.rglob("*.csv"):
try:
            df = pd.read_csv(csv_file)
            lines = len(df)
            total += lines
            print(f"{csv_file}: {lines} 行")
except Exception as e:
            print(f"读取失败 {csv_file}: {e}")

    print("-" * 20)
    print(f"总行数:{total}")

if __name__ == "__main__":
    count_lines(r"D:\data")

PyCharm 里直接点右键 Run,就能看到输出,还能配断点、条件断点、单步调试,体验不错。

五、想要「类 Linux」体验:WSL2 + VS Code Remote

这个就属于 Windows 上写 Python 的「高级乐趣」了。

很多人吐槽:在 Windows 上搞一些库总报莫名其妙的错,但在 Linux 一次过。那干脆用 Windows + WSL2,这等于你电脑里悄悄塞了一台 Ubuntu,又不用装双系统。

大致流程你可以先了解个感觉:

1)在 PowerShell(管理员)里开启 WSL 和虚拟机平台; 2)安装一个 WSL 发行版(比如 Ubuntu); 3)在 Ubuntu 里 sudo apt install python3 python3-venv; 4)在 VS Code 里装 Remote - WSL 插件; 5)点左下角绿色图标,Attach 到 WSL 里面的目录。

之后你看到的文件虽然是在 Ubuntu 里,但编辑器还是 Windows 上的 VS Code,你可以像在 Linux 下一样用命令:

python3 -m venv .venv
source .venv/bin/activate
pip install fastapi uvicorn

然后写个简单的 Web 服务:

# file: main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
defhello(name: str = "world"):
return {"msg": f"Hello, {name} from WSL2!"}

在 WSL 终端里跑:

(.venv) $ uvicorn main:app --reload --host 0.0.0.0 --port 8000

在 Windows 浏览器里访问 http://localhost:8000/?name=python,你就会发现:我在 Windows 上写代码,跑的却是「真正的 Linux 环境」,这就是这套组合爽的地方。

六、Windows 上那些容易踩的坑,顺手说几句

我自己和身边同事踩过一圈 Windows 坑,顺便帮你避几个:

1)中文路径和空格

有些库在 C:\Users\张三\桌面\新建文件夹 这种路径下就是容易抽风,建议代码仓库直接搞到 D:\code\xxx,干净很多。

2)多个 Python 版本乱成一锅

如果你同时装了:

  • 官方 Python
  • Anaconda
  • 某些软件自带一个 python

很容易出现:

python --version  # 一个版本
py --version      # 又是一个版本

建议你认一个主角(比如官方 + venv,或者 conda),其他用不上就卸干净,不要混用。

3)pip / python 命令找不到

通常是 PATH 环境变量没配好,最简单的方案:

  • 重装一次官方 Python,记得勾「Add to PATH」;
  • 或者直接用 py -m pip install ...,这个走的是 Python 启动器,不太容易乱。

4)终端别死磕 cmd

Windows Terminal + PowerShell 真心比传统 cmd 好用太多了:

  • 支持标签页;
  • 字体、颜色好调;
  • 和 VS Code 配合也更自然。

七、给你一个可以复用的小脚手架

你每次新建一个 Python 项目,都可以按这个脚本来快速初始化(在 Windows + VS Code 场景):

# file: init_project.py
"""
简单的项目初始化小脚本:
- 创建 src 目录
- 创建 README.md
- 写入一个最简单的 main.py
"""


from pathlib import Path
import textwrap

PROJECT_TEMPLATE = textwrap.dedent("""
    # 简单 Python 项目

    这里写点项目说明。
"""
).lstrip()

MAIN_TEMPLATE = textwrap.dedent("""
    def main():
        print("hello, windows + python!")

    if __name__ == "__main__":
        main()
"""
).lstrip()

definit_project(base_dir: str) -> None:
    root = Path(base_dir)
    src = root / "src"
    src.mkdir(parents=True, exist_ok=True)

    readme = root / "README.md"
    main_py = src / "main.py"

ifnot readme.exists():
        readme.write_text(PROJECT_TEMPLATE, encoding="utf-8")
        print(f"创建: {readme}")

ifnot main_py.exists():
        main_py.write_text(MAIN_TEMPLATE, encoding="utf-8")
        print(f"创建: {main_py}")

    print("项目初始化完成,可以开始愉快写代码了~")

if __name__ == "__main__":
    target = input("请输入项目目录(例如 D:\\\\code\\\\demo ): ").strip()
if target:
        init_project(target)

用法很简单:

  1. 在一个已经激活 venv 的项目里新建 init_project.py;
  2. 跑一下,填一个目录,比如 D:\code\demo1;
  3. 打开那个目录,你会看到已经有 src/main.py 可以直接写了。

这类小脚本用多了,你会发现:Windows 写 Python 其实一点都不「别扭」,就是需要一套顺手的组合和一点点习惯。

差不多就聊到这儿,你可以先挑一套自己觉得顺眼的组合: 想轻一点就 VS Code + venv;想数据项目舒服,就 PyCharm + Conda;想要「类 Linux」氛围,就 WSL2 + VS Code Remote,慢慢玩。