Windows上写 Python 代码的王炸组合!
很多人跟我吐槽:白天在公司 Linux 服务器上一顿操作猛如虎,晚上回到家,对着 Windows 笔记本,突然就不知道怎么愉快地写 Python 了——要么一堆环境冲突,要么中文路径把你整破防,要么 VS Code 跟 Python 找不到对象,互相不认识。
今天就当我在你旁边,帮你把 Windows 上那套 “写 Python 的王炸组合” 摆明白,整完你在家写代码的体验不比公司差,甚至更爽。
一、先把地基打好:Windows 上装 Python 的正确姿势
别急着装各种 IDE,先把 Python 自己装对,不然后面全是坑。
比较稳妥的方式是去官网装:
打开浏览器搜 python download,进官网;选一个 3.10+ 的版本(比如 3.10、3.11 都行); 安装的时候一定要勾: 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)
用法很简单:
在一个已经激活 venv 的项目里新建 init_project.py;跑一下,填一个目录,比如 D:\code\demo1;打开那个目录,你会看到已经有 src/main.py可以直接写了。
这类小脚本用多了,你会发现:Windows 写 Python 其实一点都不「别扭」,就是需要一套顺手的组合和一点点习惯。
差不多就聊到这儿,你可以先挑一套自己觉得顺眼的组合: 想轻一点就 VS Code + venv;想数据项目舒服,就 PyCharm + Conda;想要「类 Linux」氛围,就 WSL2 + VS Code Remote,慢慢玩。