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 项目的依赖干净、可复现,且不会干扰其他项目或系统!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步