virtualenv虚拟环境怎么搭建?

访客 python案例 3

手把手教你搭建Python Virtualenv虚拟环境:从零到项目隔离

目录导读

  1. 为什么需要虚拟环境?一个真实项目惨案
  2. 环境准备:Python与pip的安装检查
  3. Virtualenv核心安装:两种主流方案
  4. 创建并激活虚拟环境(Windows/macOS/Linux)
  5. 虚拟环境内安装包与版本控制
  6. 退出与删除虚拟环境
  7. 常见问题问答(Q&A)
  8. 实战建议:虚拟环境的最佳实践

为什么需要虚拟环境?一个真实项目惨案

想象一下:你同时开发两个Python项目,项目A需要Django 3.2,项目B需要Django 4.0,如果直接全局安装,系统会强制升级或降级,导致其中一个项目崩溃,这就是没有虚拟环境的“依赖冲突地狱”。

虚拟环境的核心价值:为每个项目创建独立的Python解释器与依赖包空间,实现:

  • 隔离性:不同项目使用不同版本的库,互不干扰
  • 可复现性:通过requirements.txt精确锁定依赖版本
  • 系统洁癖:避免全局site-packages被污染

环境准备:Python与pip的安装检查

在开始前,请确认你的电脑已安装Python(推荐3.6+)。

打开终端(CMD/PowerShell/Terminal),输入:

python --version   # 或 python3 --version
pip --version      # pip是Python包管理工具

如果系统提示“未找到命令”,请前往Python官网下载安装包,安装时务必勾选“Add Python to PATH”,macOS用户推荐使用Homebrew安装:brew install python

Virtualenv核心安装:两种主流方案

方案A:使用内置venv模块(Python 3.3+原生支持)

这是最推荐的方式,无需额外安装:

python -m venv myproject_env
  • myproject_env是虚拟环境文件夹名,可自定义
  • 优势:零依赖,与Python版本完美绑定

方案B:安装virtualenv第三方工具(更灵活)

适用于对Python版本切换有更高要求的场景:

pip install virtualenv

然后创建:

virtualenv myproject_env

相比venv,virtualenv支持更老的Python版本,且速度稍快。

选型建议:除非你需要兼容Python2,否则直接使用方案A(venv),它是官方推荐的未来方向。

创建并激活虚拟环境(Windows/macOS/Linux)

1 创建环境(以Django项目为例)

cd my_django_project    # 进入项目根目录
python -m venv .venv    # 常见做法:将环境命名为.venv(隐藏文件夹)

2 激活虚拟环境

Windows(CMD/PowerShell)

.venv\Scripts\activate

激活后,终端最左侧会出现 (.venv) 前缀,表示当前处于虚拟环境。

macOS/Linux

source .venv/bin/activate

验证激活状态

# 查看当前Python解释器路径
which python   # Linux/macOS
where python   # Windows

输出应指向项目目录下的.venv文件夹,而非全局路径。

3 初次使用:安装一个包测试

pip install requests==2.28.0
pip list        # 仅显示虚拟环境内的包

虚拟环境内安装包与版本控制

导出依赖清单

开发完成后,生成依赖文件分享给团队:

pip freeze > requirements.txt
```大致如下:

attrs==21.4.0 Django==4.1.7 requests==2.28.0


### 在另一台机器上重建环境
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

关键点:使用pip freeze导出的版本号是固定的,确保环境完全一致。

退出与删除虚拟环境

退出环境

deactivate

终端前的 (.venv) 前缀消失,回到全局环境。

删除虚拟环境

直接删除文件夹即可(需先退出环境):

rm -rf .venv    # Linux/macOS
rmdir /s .venv  # Windows

删除虚拟环境不影响项目代码,仅清除Python包。

常见问题问答(Q&A)

Q1:激活虚拟环境后,pip install安装的包到底去了哪里?

A:安装在.venv/Lib/site-packages(Windows)或.venv/lib/python版本/site-packages(macOS/Linux)中,不影响全局Python的site-packages。

Q2:我激活了虚拟环境,但为什么还能使用全局安装的包?

A:默认情况下,虚拟环境会继承全局site-packages,可以通过--no-site-packages参数(仅virtualenv支持)创建纯净环境,但venv默认就是隔离的,仅包含标准库。

Q3:如何为每个项目自动创建虚拟环境?

A:推荐使用pipenvpoetry,它们会自动管理虚拟环境,简单方式:在项目根目录创建Makefile,加入以下命令:

install:
    python -m venv .venv
    .venv/bin/pip install -r requirements.txt

Q4:在不同操作系统上,激活命令不同怎么办?

A:可以使用脚本自动判断,在项目根目录创建activate.sh(Linux/macOS)和activate.bat(Windows),分别包含对应的激活命令,或使用uv等跨平台工具。

Q5:虚拟环境太占磁盘空间怎么办?

A:每个虚拟环境默认包含完整的Python解释器和标准库,约30-50MB,解决方案:

  • 使用conda环境(共享基础包)
  • 仅保留requirements.txt文件,每次部署时重新创建(推荐)
  • 删除旧版本Python的pip缓存:pip cache purge

实战建议:虚拟环境的最佳实践

  1. 命名规范:使用.venv(点开头)作为隐藏文件夹,避免误操作
  2. 免签入版本控制:在.gitignore中添加.venv/,不要将环境文件夹提交到Git
  3. 依赖文件源头管理:创建环境后立即生成requirements.txt,每次新增依赖后通过pip freeze > requirements.txt更新
  4. 升级pip本身:在虚拟环境中执行pip install --upgrade pip,使用最新版pip避免兼容问题
  5. 使用别名简化操作:在shell配置文件中添加:
    alias va="source .venv/bin/activate"
    alias vd="deactivate"
  6. 多版本Python场景:使用pyenv管理Python版本,然后为每个版本创建虚拟环境(如.venv-py39.venv-py310

虚拟环境是Python开发者必备的“隔离舱”,只需花5分钟配置一次,就能避免数小时的依赖调试,现在打开终端,为你的第一个项目创建专属环境吧!

标签: 虚拟环境 搭建步骤

抱歉,评论功能暂时关闭!