讲解

虚拟环境(virtual environment)为每个项目创建独立的 Python 包安装空间:项目 A 用 Django 4、项目 B 用 Django 5,互不冲突,也不污染系统 Python。标准库 venv 模块一行创建:python3 -m venv .venv(.venv 是社区通行的目录名),然后「激活」它——macOS/Linux 执行 source .venv/bin/activate,Windows 是 .venv\Scripts\activate。激活后终端提示符前出现 (.venv),此后的 python3 和 pip 都指向这个独立环境,deactivate 退出。

标准工作流是:新项目先建 venv 并激活,然后 pip install 装依赖,开发完成后 pip freeze > requirements.txt 锁版本并提交到版本库(.venv 目录本身不提交,写进 .gitignore);协作者克隆项目后建自己的 venv,pip install -r requirements.txt 即可精确还原环境。这套流程是 Python 工程化的最低标准,从你写的第二个项目开始就应养成习惯。

收尾谈几条贯穿始终的最佳实践。风格遵循 PEP 8(蛇形命名、4 空格缩进、行宽 79 或团队约定),用 ruff 或 black 自动格式化而不是手工对齐。写代码追求「明确优于隐晦」:显式转换类型、显式处理异常、函数参数和返回值写清。用类型注解和 docstring 帮助未来的自己。版本控制用 Git,小而频繁的提交。持续学习的路径:官方文档 docs.python.org 的教程和库参考、PEP 8 风格指南、以及真实的开源项目源码。教程到此结束,但编程是练出来的——挑一个你真正需要的小工具,现在就开始写。

示例

虚拟环境的完整工作流(bash 示例,在终端执行):

# 1. 在项目目录创建虚拟环境
python3 -m venv .venv

# 2. 激活(macOS/Linux;Windows 用 .venv\Scripts\activate)
source .venv/bin/activate

# 3. 激活后装包,只影响本环境
python3 -m pip install requests

# 4. 锁定依赖版本
python3 -m pip freeze > requirements.txt

# 5. 退出环境
deactivate

# 别人拿到项目后:
python3 -m venv .venv && source .venv/bin/activate
python3 -m pip install -r requirements.txt

.gitignore 里至少要有 .venv/ 和 pycache/。最后用一段代码回顾本教程的核心语法:

# 终章彩蛋:一段代码串起 35 章的主线
from dataclasses import dataclass, field


@dataclass
class Chapter:
    title: str
    done: bool = False


@dataclass
class Learner:
    name: str
    chapters: list = field(default_factory=list)

    def study(self, chapter):
        chapter.done = True
        self.chapters.append(chapter)
        return self

    @property
    def progress(self):
        if not self.chapters:
            return 0.0
        done = sum(1 for c in self.chapters if c.done)
        return done / 35  # 本教程共 35 章


you = Learner('未来的 Python 工程师')
for title in ['认识 Python', '变量与赋值', '函数', '类与对象', '装饰器']:
    you.study(Chapter(title))

print(f'{you.name} 已学完 {len(you.chapters)} 章,进度 {you.progress:.1%}')
print('剩下的路,用代码说话。加油!')

常见坑

  • 不激活就 pip install:包装进全局环境,项目间互相污染。看到终端提示符前的 (.venv) 再装包。
  • 把 .venv 提交进 Git:几百 MB 的依赖目录进版本库是事故。.gitignore 里写 .venv/ 和 pycache/。
  • requirements.txt 长期不更新:装了新包忘了重新 freeze,协作者还原环境后报 ModuleNotFoundError。装完包顺手 freeze。
  • 教程看完不动手:收藏十篇教程不如写烂一个项目。挑个真实需求——自动整理文件、抓数据、记账脚本——边写边查是唯一的速成法。

小结

venv 隔离项目环境,activate 后装包,freeze 锁版本,.venv 不进 Git;风格跟 PEP 8,工具用 ruff/black。教程完结——去写属于你自己的项目吧。