第4章 Python环境搭建:版本选择、虚拟环境与依赖管理
做量产烧录脚本,Python环境是第一道坎。我见过太多人在这上面栽跟头——版本不对、依赖冲突、打包后跑不起来。说白了,环境搭不好,后面写得再漂亮也是白搭。
这一章,我把这几年踩过的坑、积累的经验都摊开来讲。你跟着做,基本不会出问题。
4.1 Python版本怎么选?
先给结论:量产烧录脚本,我推荐用Python 3.8或3.10。
为什么不是最新的3.12?你想想看,烧录脚本要跑在产线工位上,那些工控机可能还是Windows 7或者Ubuntu 18.04。Python 3.12对旧系统的支持已经砍了不少,到时候装不上就尴尬了。
我个人的选择标准是这样的:
| 场景 | 推荐版本 | 原因 |
|---|---|---|
| 新项目、新产线 | Python 3.10 | 性能好,语法特性够用,生态成熟 |
| 老旧工控机(Win7/Ubuntu 16.04) | Python 3.8 | 兼容性最好,pyinstaller打包稳定 |
| 团队已有项目 | 跟项目保持一致 | 别给自己找麻烦 |
4.2 虚拟环境——每个项目一个“小房间”
你有没有遇到过这种情况:项目A需要pyserial 3.4,项目B需要pyserial 3.0,装来装去把系统搞崩了?
虚拟环境就是解决这个问题的。它给每个项目创建一个独立的Python环境,互不干扰。
4.2.1 venv——Python自带的方案
从Python 3.3开始,venv就是标准库的一部分了。不需要额外安装,直接用:
# 创建虚拟环境
python -m venv myenv
# 激活(Windows)
myenv\Scripts\activate
# 激活(Linux/Mac)
source myenv/bin/activate
# 退出
deactivate
激活后,命令行前面会出现 (myenv) 提示符。这时候你装的所有包都只在这个环境里生效。
.venv 文件夹,然后加到 .gitignore 里。这样既不会污染代码仓库,团队成员也知道环境在哪。
4.2.2 为什么我后来改用Poetry?
venv虽然简单,但有个痛点:依赖管理全靠手写requirements.txt。项目大了以后,版本冲突、依赖嵌套,查起来特别头疼。
Poetry把虚拟环境创建、依赖管理、打包发布全包了。它用 pyproject.toml 统一管理配置,还自动生成 poetry.lock 锁定版本。
安装Poetry:
# 推荐方式(避免污染系统Python)
curl -sSL https://install.python-poetry.org | python3 -
# 或者用pip
pip install poetry
初始化项目:
poetry new my-flash-tool
cd my-flash-tool
poetry add pyserial pyusb
poetry add --dev pytest pyinstaller
看看生成的 pyproject.toml:
[tool.poetry]
name = "my-flash-tool"
version = "0.1.0"
description = "量产烧录脚本"
authors = ["Your Name"]
[tool.poetry.dependencies]
python = "^3.10"
pyserial = "^3.5"
pyusb = "^1.2"
[tool.poetry.dev-dependencies]
pytest = "^7.0"
pyinstaller = "^5.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
核心优势:
- 自动解析依赖树,避免版本冲突
- lock文件锁定所有依赖的精确版本,团队一致
- 一条命令就能发布到PyPI
- 内置虚拟环境管理,不用手动激活
4.3 依赖管理实战——从requirements.txt到Poetry
先看看传统方式怎么做的:
# requirements.txt
pyserial==3.5
pyusb==1.2.0
pywin32==305; platform_system == "Windows"
pyside6==6.5.0
安装:
pip install -r requirements.txt
这种方式的问题在于:你没法保证不同机器上装的是完全一样的版本。特别是那些没有指定精确版本的包,今天装和明天装可能就不一样了。
用Poetry就简单多了:
# 添加依赖
poetry add "pyserial>=3.5,<4.0"
# 安装所有依赖(包括dev)
poetry install
# 只安装生产依赖
poetry install --only main
# 更新依赖
poetry update
Poetry会自动生成 poetry.lock,把这个文件提交到Git里,团队所有人装出来的环境一模一样。
4.4 IDE推荐——工欲善其事,必先利其器
写烧录脚本,IDE选对了能省一半时间。我主要用两个:VS Code和PyCharm。
4.4.1 VS Code——轻量、灵活、免费
如果你经常要在不同项目间切换,或者电脑配置一般,VS Code是首选。
必装插件:
- Python(微软官方)——语法高亮、智能提示、调试
- Pylance——类型检查,能提前发现很多低级错误
- Poetry——在VS Code里直接管理Poetry环境
- GitLens——看代码是谁写的、什么时候改的
配置虚拟环境:
// settings.json
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/Scripts/python.exe",
"python.terminal.activateEnvironment": true,
"python.linting.enabled": true,
"python.linting.pylintEnabled": true
}
4.4.2 PyCharm——功能全面、开箱即用
PyCharm的社区版免费,专业版要钱。但说实话,写烧录脚本社区版完全够用。
PyCharm的优势:
- 内置数据库工具——调试时直接看SQLite数据
- 强大的重构功能——改个变量名,所有引用自动更新
- 远程开发——可以连到产线工控机上调试
我个人是VS Code和PyCharm混着用。写小工具用VS Code,做大项目用PyCharm。没有绝对的好坏,顺手就行。
4.5 本章知识体系
下面这张图把Python环境搭建的核心逻辑串起来了:
4.6 我的推荐配置清单
如果你不想纠结,直接照这个来:
- Python 3.10——装到
C:\Python310或/usr/local/python3.10 - Poetry——全局安装,每个项目独立环境
- VS Code + Python插件 + Pylance
- 项目根目录建
.venv,加到.gitignore - 用
poetry add管理所有依赖
一个小技巧:在VS Code里按 Ctrl+Shift+P,输入 Python: Select Interpreter,选择 .venv 里的Python解释器。这样终端、调试器、代码提示都会自动用虚拟环境。