1. 创建一个venv的虚拟环境

1.1 pip show pip

pip show 是 pip 内置子命令,作用:查看一个已安装包的详细元信息。

(base) ➜  ~ pip show pip
Name: pip
Version: 23.3.1
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: distutils-sig@python.org
License: MIT
Location: /opt/anaconda3/lib/python3.11/site-packages
Requires:
Required-by:
  • 当前环境:Anaconda 自带的 base 虚拟环境
  • pip 版本:23.3.1(版本偏旧,2023 年底版本,存在部分兼容性、安全漏洞)
  • 绑定 Python:Python 3.11
  • 安装路径:/opt/anaconda3/lib/python3.11/site-packages,说明是conda全局安装的pip,不是单独系统 Python 的

1.2 生成venv 虚拟环境

python -m venv .venv

python -m

  • -m 参数含义:以模块方式运行 Python 内置标准库
  • 强制调用当前这条 python 命令绑定的解释器,避免 pip/python 版本错乱,是最规范写法

venv

  • Python 3.3+ 自带的内置虚拟环境模块,不需要额外 pip 安装,专门用来创建隔离的 Python 虚拟环境。
  • 作用:给项目单独一套 Python 解释器、pip、依赖包,不同项目依赖版本互不冲突。

.venv
虚拟环境文件夹名称,. 开头在 Linux/macOS 会被默认隐藏
行业通用惯例:几乎所有 Python 项目都把虚拟环境命名为 .venv,放在项目根目录下

执行后发生了什么

运行完当前目录会生成 .venv 隐藏文件夹,内部包含:

  • 独立 Python 解释器
  • 独立 pip 工具
  • site-packages 包安装目录
    相当于给这个项目单独复制了一套干净 Python 环境。

激活虚拟环境(分系统)

  1. macOS / Linux
source .venv/bin/activate

激活成功后,命令行前缀会出现 (.venv) 标识。

在这里插入图片描述

  1. Windows CMD
.venv\Scripts\activate.bat
  1. Windows PowerShell
.venv\Scripts\Activate.ps1

激活后常用操作

# 安装依赖,只会装在.venv里
pip install requests numpy


>>> import requests
>>> import numpy
>>> print(numpy.__version__)
2.4.6
>>> print(requests.__version__)
2.34.2

# 导出依赖清单给别人复用
pip freeze > requirements.txt

# 退出虚拟环境
deactivate

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

配套.gitignore 规范(必加)

把虚拟环境上传到 Git 毫无意义,在 .gitignore 添加一行:

.venv/
__pycache__/
*.pyc

小总结

在这里插入图片描述

1.3 升级 pip(推荐两种方式)

  1. pip install --upgrade pip
  2. conda update pip

升级完成后再次校验:

pip -V
# 或
pip show pip

安装包的建议

后续装包优先:
python -m pip install xxx,防止装到别的 Python 里

若后续打算用 uv 替代 pip 做极速依赖管理,可以安装:
pip install uv

(.venv) (base) ➜  site-packages pip install uv
Collecting uv
  Downloading uv-0.12.1-py3-none-macosx_11_0_arm64.whl.metadata (11 kB)
Downloading uv-0.12.1-py3-none-macosx_11_0_arm64.whl (18.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.4/18.4 MB 1.6 MB/s  0:00:14
Installing collected packages: uv
Successfully installed uv-0.12.1

(.venv) (base) ➜  site-packages uv --version
uv 0.11.6 (65950801c 2026-04-09 aarch64-apple-darwin)

2. uv

uv是新一代python环境管理工具,比如可以安装多个不同版本的python环境,uv可以管理包(依赖)的版本。

在这里插入图片描述

2.1 uv 多版本 Python 核心能力

2.1.1 安装多个独立 Python 版本(互不覆盖、全局统一存放)

# 安装uv,这个是先安装好了python然后安装的uv
(.venv) (base) ➜  site-packages pip install uv
Collecting uv
  Downloading uv-0.12.1-py3-none-macosx_11_0_arm64.whl.metadata (11 kB)
Downloading uv-0.12.1-py3-none-macosx_11_0_arm64.whl (18.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.4/18.4 MB 1.6 MB/s  0:00:14
Installing collected packages: uv
Successfully installed uv-0.12.1

(.venv) (base) ➜  site-packages uv --version
uv 0.11.6 (65950801c 2026-04-09 aarch64-apple-darwin)

# 查看可下载的所有Python版本
uv python list

# 一键安装多个版本(自动下载官方预编译包,macOS/ARM自动适配)
uv python install 3.10
uv python install 3.11
uv python install 3.12
uv python install 3.13

# 只看本机已经装好的版本
uv python list --installed

所有版本存在独立目录:~/.local/share/uv/python/,完全隔离,不会污染系统 Python。

(base) ➜  Documents pip show uv
Name: uv
Version: 0.11.6
Summary: An extremely fast Python package and project manager, written in Rust.
Home-page: https://pypi.org/project/uv/
Author:
Author-email: "Astral Software Inc." <hey@astral.sh>
License:
Location: /opt/anaconda3/lib/python3.11/site-packages
Requires:
Required-by:

2.1.2 给不同项目绑定不同 Python 版本

方式 1:创建虚拟环境时直接指定版本

# 项目A:基于Python3.10创建.venv
uv venv --python=3.10 .venv

# 项目B:基于Python3.12创建.venv
uv venv --python=3.12 .venv

每个项目的.venv里面自带对应版本的 Python 解释器,彻底隔离。

方式 2:项目永久锁定版本(团队协作规范)
进入项目目录执行:

uv python pin 3.12

不用激活环境,直接指定版本运行代码

# 用3.11版本跑脚本
uv run --python 3.11 python main.py

2.1.3 环境变量的配置

在这里插入图片描述

Windows (CMD)

setx UV_DEFAULT_INDEX "https://pypi.tuna.tsinghua.edu.cn/simple"

Windows (PowerShell)

# 临时生效
$env:UV_INDEX_URL = "https://pypi.tuna.tsinghua.edu.cn/simple/"

# 永久生效(用户变量)
[Environment]::SetEnvironmentVariable("UV_INDEX_URL", "https://pypi.tuna.tsinghua.edu.cn/simple/", "User")

Mac/Linux 永久配置一行

echo 'export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple/"' >> ~/.zshrc
source ~/.zshrc

2.1.4 新项目使用uv

uv init --no-package

uv venv

安装依赖包
uv add requests

uv tree

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.1.5 uv与venv同时存在时 项目依赖安装

## 环境安装
### 方式1:uv 推荐(团队/CI/生产)
uv venv .venv
source .venv/bin/activate
uv pip sync uv.lock

### 方式2:原生 venv + pip 兼容
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

2.1.6 UV 新建项目强制指定 Python 版本

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

完整大厂新项目一套标准流程

# 1. 提前装好解释器(一次执行)
uv python install 3.11

# 2. 新建文件夹进入
mkdir api-demo && cd api-demo

# 3. 项目永久锁定Python3.11(提交git)
uv python pin 3.11

# 4. 基于锁定版本创建虚拟环境
uv venv .venv

# 5. 激活环境
source .venv/bin/activate

# 6. 安装依赖 + 生成锁文件
uv pip install fastapi uvicorn

# 4. 生成生产锁文件 + 兼容老同事requirements.txt
uv lock
uv pip freeze > requirements.txt

补充避坑要点

  1. 如果本机没执行 uv python install 3.11,执行 uv venv --python=3.11 会自动触发下载;
  2. .python-version 文件优先级最高,优先级:.python-version > 命令行 --python 参数 > pyproject.toml
  3. 给老已有项目改 Python 版本:修改 .python-version,删掉旧 .venv 重新 uv venv .venv 重建即可;
  4. 和同事混用原生 venv:对方执行 python -m venv .venv 前,本地装好对应版本 Python 就行,完全兼容。

2.1.7 uv命令补充

在这里插入图片描述

2.1.8 拉别人的代码 通过uv安装环境

  1. 第一步:拉取代码到本地
git clone 你的GitLab仓库地址
cd 项目文件夹名称
  1. 第二步:判断项目里有什么依赖文件(3 种场景全覆盖)
    在这里插入图片描述

在这里插入图片描述

3. 为什么有了uv还需要venv

uv 是「工具管理器 + 依赖解析器 + 包安装器」,venv 是「Python 隔离环境底层载体」;uv 可以直接调用 / 创建 venv,但不能替代 venv 本身的隔离原理。

在这里插入图片描述

在这里插入图片描述

❌ 错误:uv 替代了 venv
✅ 正确:uv 包装、增强了 venv,底层载体仍是标准虚拟环境

❌ 错误:有 uv 就不需要虚拟环境隔离
✅ 正确:uv 只是安装工具,不隔离 Python 包路径,不做隔离依然会版本打架

最终极简总结(记忆版)
venv:负责环境物理隔离(地基,Python 官方标准,无法被替代)
uv:负责环境创建加速、依赖解析、下载提速、版本锁定、多 Python 管理(上层高效工具)

更多推荐