Python 虚拟环境(Virtual Environment)是一个独立的 Python 运行环境,它允许你在同一台机器上为不同的项目创建隔离的 Python 环境。每个虚拟环境都有自己的:
为什么需要虚拟环境
场景举例:
虚拟环境工具
若需更老版本支持,可使用 virtualenv(Python 2兼容):
pip install virtualenv # 非必须,venv 通常够用
本章节我们将使用 venv 创建和管理虚拟环境。
创建虚拟环境
Python 3.3+ 内置了 venv 模块,无需额外安装。
检查 Python 版本:
python3 --version # 或者 python --version
创建虚拟环境:
# 基本语法 python3 -m venv 环境名称
例如,创建一个名为 .venv 的虚拟环境:
.venv
参数说明:
-m venv
创建后的目录结构
.venv/ ├── bin/ # 在 Unix/Linux 系统上 │ ├── activate # 激活脚本 │ ├── python # 环境 Python 解释器 │ └── pip # 环境的 pip ├── Scripts/ # 在 Windows 系统上 │ ├── activate # 激活脚本 │ ├── python.exe # 环境 Python 解释器 │ └── pip.exe # 环境的 pip └── Lib/ # 安装的第三方库
激活虚拟环境
激活环境后,所有 Python 和 pip 命令都会使用虚拟环境中的版本。
Windows 系统
.venv\Scripts\activate
Unix/Linux/MacOS 系统
source .venv/bin/activate
激活成功后,命令行提示符通常会显示环境名称:
(.venv) $
使用虚拟环境
安装包
在激活的环境中,使用 pip 安装的包只会影响当前环境:
pip install package_name
例如:
# 安装单个包(如Django) (.venv) pip install django==3.2.12 # 安装多个包 (.venv) pip install requests pandas
查看已安装的包
(.venv) pip list Package Version ---------- ------- Django 3.2.12 pip 21.2.4
导出依赖
(.venv) pip freeze > requirements.txt
requirements.txt 文件内容示例:
Django==3.2.12 requests==2.26.0 pandas==1.3.3
从文件安装依赖
(.venv) pip install -r requirements.txt
退出虚拟环境
当完成工作后,可以退出虚拟环境:
deactivate
退出后,命令行提示符会恢复正常,Python 和 pip 命令将使用系统全局版本。
删除虚拟环境
要删除虚拟环境,只需删除对应的目录即可:
# 确保已退出环境 deactivate # 删除目录 rm -rf .venv # Linux/macOS del /s /q .venv # Windows (命令提示符)
实际项目示例
假设开发一个 Django 项目:
高级用法
指定 Python 版本
如果你安装了多个 Python 版本,可以指定使用哪个版本来创建虚拟环境:
python3.8 -m venv .venv # 使用 Python 3.8
创建不带 pip 的环境
python -m venv --without-pip .venv
创建继承系统包的虚拟环境
python -m venv --system-site-packages .venv
常见问题解答
1. 为什么我的虚拟环境没有 activate 脚本?
确保你使用的是正确的路径:
Scripts\activate
bin/activate
2. 如何知道当前是否在虚拟环境中?
检查命令行提示符是否有环境名称前缀,或运行:
which python
3.安装包速度慢
使用国内镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/ simple package_name
查看 Python 解释器的路径是否在虚拟环境目录中。
4. 虚拟环境可以移动位置吗?
不建议移动虚拟环境,因为其中的路径是硬编码的。如果需要移动,最好重新创建。
5. 虚拟环境会占用多少空间?
虚拟环境本身很小(约 20-50MB),但随着安装的包增多,空间占用会增加。
最佳实践
requirements.txt