Python 虚拟环境与依赖管理指南:Conda、venv、uv 和 pip
从 Windows 与 Linux 的实际使用出发,系统整理 Conda、Python 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 图形安装程序并按向导完成安装。
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.toml 和 uv.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 项目和服务器部署优先考虑
venv或uv。 - 需要同时管理 CUDA、科学计算库和多个 Python 版本时,Conda/Miniconda 更省事。
- 不要把
.venv上传到 Git;在目标机器重新创建环境并安装锁定依赖。 - 镜像源用于提高下载速度,但依赖版本仍应通过
requirements.txt、pyproject.toml或锁文件固定。 - 生产环境尽量使用 HTTPS 镜像,并保留回退官方源的能力。