Python 虚拟环境与依赖管理指南:Conda、venv、uv 和 pip

从 Windows 与 Linux 的实际使用出发,系统整理 Conda、Python venv、uv 与 pip 的安装、虚拟环境创建、国内镜像配置、依赖导出及离线安装方法。

Python 虚拟环境与依赖管理指南:Conda、venv、uv 和 pip
本文目录

Python 项目一多,解释器版本、依赖版本和安装位置就很容易互相影响。虚拟环境的核心价值,是把每个项目的解释器与第三方包隔离开来,让开发、部署和复现都更可控。

本文从实际使用出发,集中整理 Conda/Miniconda、Python 自带的 venv、速度更快的 uv,以及 pip 镜像与离线依赖管理方法。你可以按项目规模和使用场景选择合适的组合。

一、四种工具如何选择

工具主要用途适合场景
Conda / Miniconda同时管理 Python 版本、虚拟环境和二进制依赖数据科学、机器学习、多 Python 版本
venv使用当前已安装的 Python 创建轻量环境标准 Python 项目、服务器部署
uv高速创建环境、安装依赖并管理项目新项目、追求速度和可复现性
pip安装、导出和下载 Python 包所有 Python 环境的基础包管理

二、使用 Anaconda 或 Miniconda

Anaconda 预装了大量数据科学工具,Miniconda 只包含 Conda 和少量基础组件,更轻量。大多数需要自行控制依赖的项目使用 Miniconda 即可。

Windows 安装

前往 Anaconda/Miniconda 下载页面,选择 Windows 64-bit 图形安装程序并按向导完成安装。

Anaconda 下载页面中的 Windows 64-bit 图形安装程序入口
Windows 版本下载入口示意

Linux 安装

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

安装结束后,按照终端提示初始化 Shell,或者重新打开终端使 Conda 命令生效。

配置 .condarc 与国内镜像

.condarc 常见位置:

  • Windows:C:\Users\你的用户名\.condarc
  • Linux(例如 AutoDL 容器实例):/root/.condarc

Windows 示例,同时把环境和包缓存放到指定磁盘:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
show_channel_urls: true
ssl_verify: true
envs_dirs:
  - D:\Anaconda2023\envs
pkgs_dirs:
  - D:\Anaconda2023\pkgs

Linux 示例:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - defaults
show_channel_urls: true
envs_dirs:
  - /root/autodl-tmp/conda3/envs
pkgs_dirs:
  - /root/autodl-tmp/conda3/pkgs

镜像频道不宜无差别堆叠。实际使用时按项目需要保留频道,并注意不同频道混装可能带来的依赖差异。

常用 Conda 命令

# 创建名为 iPERCore、Python 版本为 3.12.9 的环境
conda create -n iPERCore python=3.12.9

# 激活环境
conda activate iPERCore

# 查看已经创建的环境
conda env list

# 删除整个环境
conda remove -n iPERCore --all

# 清理不再使用的包缓存和安装包
conda clean --packages --tarballs

三、使用 Python 自带的 venv

venv 非常轻量,无需额外安装环境管理器。它使用当前已经安装的 Python 版本创建环境,因此如果项目需要切换 Python 大版本,应先安装对应解释器。

Linux 与 macOS

python3 -m venv .venv
source .venv/bin/activate

# 退出虚拟环境
deactivate

Windows CMD

python -m venv .venv
.venv\Scripts\activate.bat

Windows PowerShell

python -m venv .venv
.\.venv\Scripts\Activate.ps1

如果 PowerShell 阻止脚本执行,可以先检查组织的安全策略,再仅为当前用户设置合适的执行策略,不建议长期使用不受限制的全局配置。

Linux 中只有 python3 命令

Debian/Ubuntu 可以安装 python-is-python3,让 python 指向系统的 Python 3:

sudo apt update
sudo apt install python-is-python3

这条命令只适用于使用 APT 的 Debian/Ubuntu 系统。RHEL、CentOS、Alibaba Cloud Linux 等系统不要照搬,也不要覆盖系统 Python 的默认软链接。

四、使用 uv 管理环境和项目

uv 可以快速创建虚拟环境、安装依赖并管理项目锁文件,既能兼容传统的 venv + pip 工作流,也支持类似 npm 的项目模式。

安装 uv

macOS 与 Linux:

# 二选一
wget -qO- https://astral.sh/uv/install.sh | sh
curl -LsSf https://astral.sh/uv/install.sh | sh

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

如果当前网络必须经过代理,可只在当前 PowerShell 会话中临时配置:

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

Windows 默认安装目录通常是 C:\Users\你的用户名\.local\bin,安装程序会提示是否已加入 PATH。

兼容 venv 的传统方式

uv venv myenv --python=3.10
source myenv/bin/activate
uv pip install numpy

这相当于更快的 venv + pip,适合脚本和已有项目。

推荐的项目模式

uv init             # 初始化项目并生成 pyproject.toml
uv add numpy        # 安装依赖并写入项目配置和锁文件
uv run main.py      # 同步环境并运行程序

# 从 requirements.txt 迁移依赖
uv add -r requirements.txt

执行 uv run 时,uv 会读取 pyproject.tomluv.lock,自动创建或同步 .venv 后再运行程序,适合与现有工程逐步融合。

五、pip 镜像配置与常用命令

查看当前配置

pip config list -v

该命令会显示当前生效的配置项以及相关配置文件路径。

Windows 配置

常见用户配置文件为 C:\Users\你的用户名\pip\pip.ini

[global]
index-url = https://mirrors.cloud.tencent.com/pypi/simple

Linux 配置

系统级配置可放在 /etc/pip.conf;用户级配置通常使用 ~/.config/pip/pip.conf

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

常用 pip 命令

# 安装指定版本
pip install <包名>==1.2.3

# 卸载包
pip uninstall <包名>

# 批量安装依赖
pip install -r requirements.txt

# 查看当前环境中的包
pip list

# 导出当前环境的完整包版本
pip freeze > requirements.txt

下载依赖并离线安装

# 只下载指定包及其依赖,不安装
pip download <包名>

# 下载 requirements.txt 中的全部依赖
pip download -r requirements.txt -d ./req_offline_packages

# 从离线目录安装 requirements.txt 中的依赖
pip install --no-index --find-links=./req_offline_packages -r requirements.txt

# 下载 pandas 及其依赖
pip download pandas -d ./pandas_packages

# 从离线目录安装 pandas;最后仍要明确指定包名
pip install --no-index --find-links=./pandas_packages pandas

离线包必须与目标机器的操作系统、CPU 架构和 Python 版本兼容。跨机器准备依赖时,最好在与目标环境一致的容器或服务器中下载。

六、实践建议

  • 普通 Web 项目和服务器部署优先考虑 venvuv
  • 需要同时管理 CUDA、科学计算库和多个 Python 版本时,Conda/Miniconda 更省事。
  • 不要把 .venv 上传到 Git;在目标机器重新创建环境并安装锁定依赖。
  • 镜像源用于提高下载速度,但依赖版本仍应通过 requirements.txtpyproject.toml 或锁文件固定。
  • 生产环境尽量使用 HTTPS 镜像,并保留回退官方源的能力。

官方参考