Python 创建虚拟环境

虚拟环境是一个项目级别的独立 Python 运行空间。它会为当前项目准备一套独立的:

  • Python 解释器入口(可执行文件)
  • 第三方包安装目录(site-packages)
  • pip 等工具

不同项目可以拥有不同版本的依赖,互不干扰。

为什么

  • 依赖隔离:项目 A 用 Django 4.x,项目 B 用 Django 5.x,不会冲突。
  • 可复现:通过 requirements.txt 或 pyproject.toml,别人能在自己的机器上还原同样环境。
  • 降低污染:不把包安装到系统全局 Python,避免把电脑环境搞乱。
  • 便于排障:当环境坏了,删除重建 .venv 往往比修修补补更快。

作用原理

虚拟环境并不是”复制了一整套 Python”,而是建立一个本地目录(常见名为 .venv),里面包含必要结构。

当你激活虚拟环境时,主要发生两件事:

  • 临时修改 PATH:让终端优先使用 .venv 里的 python 和 pip。
  • (通常)修改提示符:在命令行前显示 (.venv),提醒你正在该环境中。

因此你执行 pip install xxx 时,包会被安装进 .venv 对应目录,而不是系统全局目录。

最佳实践

检查 Python

python3 --version

如果你电脑上 python 就是 Python 3,也可以用:

python --version

进入项目目录并创建虚拟环境

cd your-project
python3 -m venv .venv

说明:

  • -m venv:调用 Python 内置虚拟环境模块。
  • .venv:虚拟环境目录名(推荐这个名字,主流工具识别友好)。

激活虚拟环境

macOS / Linux:

source .venv/bin/activate

Windows PowerShell:

.venv\Scripts\Activate.ps1

Windows CMD:

.venv\Scripts\activate.bat

激活成功后,终端通常会出现 (.venv) 前缀。

验证当前解释器路径

macOS / Linux:

which python
which pip

Windows:

where python
where pip

输出应指向项目内 .venv 目录。

安装依赖

python -m pip install requests

推荐写法是 python -m pip,可以明确”当前解释器对应的 pip”,降低装错环境的概率。

导出依赖(可选)

pip freeze > requirements.txt

别人拿到项目后可执行:

pip install -r requirements.txt

退出虚拟环境

deactivate

注意

  • 不要把 .venv/ 提交到 Git。
  • 每个项目单独一个虚拟环境,不要多个项目共享同一个环境。
  • 解释器版本要固定:例如用 python3.11 -m venv .venv。
  • 激活失败时先确认 shell 类型和激活脚本是否对应。
  • Windows PowerShell 若报执行策略错误,可先执行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • 优先用 python -m pip install -U pip 升级 pip,避免 pip 指向错误解释器。
  • 环境异常时,最稳妥方案常常是删除 .venv 后重建。

推荐的最小工作流

每次新项目建议固定为:

  1. python3 -m venv .venv
  2. source .venv/bin/activate(或 Windows 对应命令)
  3. python -m pip install -U pip
  4. 安装项目依赖
  5. pip freeze > requirements.txt
  6. 在 .gitignore 中加入 .venv/

补充:和 Conda、Poetry 的关系

  • venv:Python 官方内置,轻量、通用、学习成本最低。
  • Conda:更偏数据科学生态,能管理非 Python 依赖。
  • Poetry:在依赖管理与打包发布流程上更完整。

如果你是 Python 初学者,先把 venv 用熟,再按项目需求选择更高级工具。


如果你只记一件事:任何 Python 项目开始前,先建 .venv 再安装依赖,否则就会遇到如下提醒:

If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
 
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
 
See /usr/share/doc/python3.12/README.venv for more information.
 
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

在 Pycharm 中,开启虚拟环境这件事情更加简单:Settings > Project: > Python Interpreter > Add Interpreter > Select Virtualenv, via: https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html#python_create_virtual_env