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/activateWindows PowerShell:
.venv\Scripts\Activate.ps1Windows CMD:
.venv\Scripts\activate.bat激活成功后,终端通常会出现 (.venv) 前缀。
验证当前解释器路径
macOS / Linux:
which python
which pipWindows:
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后重建。
推荐的最小工作流
每次新项目建议固定为:
python3 -m venv .venvsource .venv/bin/activate(或 Windows 对应命令)python -m pip install -U pip- 安装项目依赖
pip freeze > requirements.txt- 在
.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