Python环境下,虚拟环境(Virtual Environment)的创建步骤及每个步骤的意义
虚拟环境(Virtual Environment)的创建步骤及每个步骤的意义
在 Python 开发中,虚拟环境(venv)用于隔离不同项目的依赖,避免全局污染。以下是详细步骤及其作用:
1. 检查 Python 版本
命令:
bash
复制
python3 --version
作用:
- 确保系统已安装 Python 3.6+(Flask 最低要求)。
- 如果未安装 Python 3,需先安装:
bash复制
sudo apt update && sudo apt install python3 python3-pip # Ubuntu/Debian sudo yum install python3 python3-pip # CentOS/RHEL
2. 安装 virtualenv(可选)
命令:
bash
复制
pip install virtualenv
作用:
virtualenv是更强大的虚拟环境管理工具(比内置venv功能更多)。- Python 3.3+ 已内置
venv模块,可直接使用,无需额外安装。
3. 创建虚拟环境
命令:
bash
复制
python3 -m venv myenv
参数说明:
myenv:虚拟环境目录名(可自定义,如venv、.venv)。-m venv:调用 Python 内置的venv模块。
作用:
- 在项目目录下生成一个隔离的 Python 环境。
- 目录结构示例:
markdown复制
myenv/ ├── bin/ # Linux/Mac 的可执行文件(如 python、pip) ├── Scripts/ # Windows 的可执行文件 ├── lib/ # 安装的依赖包 └── pyvenv.cfg # 虚拟环境配置
4. 激活虚拟环境
Linux/Mac
bash
复制
source myenv/bin/activate
Windows
cmd
复制
myenv\Scripts\activate
作用:
- 激活后,终端提示符会显示虚拟环境名(如
(myenv) $)。 - 此时所有
pip安装的包仅作用于当前虚拟环境,不会污染全局。
验证是否激活:
bash
复制
which python # 应指向虚拟环境内的 Python
which pip # 应指向虚拟环境内的 pip
5. 安装项目依赖
命令:
bash
复制
pip install flask
作用:
- 所有通过
pip安装的包(如flask、numpy)仅存储在myenv/lib/下。 - 全局 Python 环境不受影响。
6. 生成依赖列表(便于协作/部署)
命令:
bash
复制
pip freeze > requirements.txt
作用:
- 将当前虚拟环境的所有依赖及其版本写入
requirements.txt。 - 其他人或生产服务器可通过以下命令复现相同环境:
bash复制
pip install -r requirements.txt
7. 退出虚拟环境
命令:
bash
复制
deactivate
作用:
- 退出虚拟环境,恢复全局 Python 环境。
- 后续操作(如
pip install)将影响全局。
8. 删除虚拟环境(可选)
命令:
bash
复制
rm -rf myenv # Linux/Mac
rd /s /q myenv # Windows
作用:
- 彻底清理虚拟环境(适用于项目废弃或重建环境)。
关键步骤的意义总结
| 步骤 | 意义 |
|---|---|
python3 -m venv |
创建隔离的 Python 环境,避免依赖冲突。 |
source activate |
切换当前 Shell 到虚拟环境,确保后续操作(如 pip)仅影响当前项目。 |
pip freeze |
记录依赖版本,便于团队协作或部署。 |
deactivate |
退出虚拟环境,避免误操作全局 Python。 |
虚拟环境 vs 全局环境
| 场景 | 虚拟环境 | 全局环境 |
|---|---|---|
pip install flask |
仅安装在 myenv/lib/ 下 |
安装在系统 Python 目录 |
| 影响范围 | 仅当前项目 | 所有项目 |
| 安全性 | 高(隔离依赖) | 低(可能破坏系统工具依赖) |
最佳实践
- 每个项目单独使用一个虚拟环境。
- **不要用
sudo pip**(避免污染系统 Python)。 - 将
venv/或.venv/添加到.gitignore(不提交虚拟环境到 Git)。
通过虚拟环境,你可以确保 Flask 项目的依赖干净、可复现,且不会干扰其他项目或系统!

浙公网安备 33010602011771号