Python环境与依赖管理
mikigo
pip
简介
pip 是 Python 的官方包管理工具,用于安装、卸载和管理 Python 包。它是 Python 标准库的一部分,从 Python 2.7.9 和 Python 3.4 开始默认安装。pip 可以从 Python Package Index (PyPI) 下载并安装第三方库。
安装
pip 通常随 Python 一起安装。如果需要单独安装或升级:
# Windows
python -m pip install --upgrade pip
# Linux/Mac
pip3 install --upgrade pip
# 或者使用 ensurepip 模块
python -m ensurepip --upgrade
使用说明
# 安装包
pip install package_name
# 指定版本安装
pip install package_name==1.0.0
# 安装最新版本
pip install --upgrade package_name
# 卸载包
pip uninstall package_name
# 列出已安装的包
pip list
# 查看包信息
pip show package_name
# 导出依赖列表
pip freeze > requirements.txt
# 从依赖列表安装
pip install -r requirements.txt
# 搜索包
pip search package_name
# 查看过期的包
pip list --outdated
venv
简介
venv 是 Python 3.3 引入的轻量级虚拟环境管理工具,用于创建独立的 Python 环境。每个虚拟环境都有自己的 Python 解释器和包安装目录,不会影响系统或其他虚拟环境。
安装
venv 是 Python 标准库的一部分,无需单独安装:
# 检查是否可用
python3 -m venv --help
使用说明
# 创建虚拟环境
python3 -m venv myenv
# 激活虚拟环境 (Linux/Mac)
source myenv/bin/activate
# 激活虚拟环境 (Windows)
myenv\Scripts\activate
# 退出虚拟环境
deactivate
# 删除虚拟环境
# 直接删除虚拟环境目录即可
rm -rf myenv
virtualenv
简介
virtualenv 是一个第三方工具,用于创建隔离的 Python 环境。它比 venv 出现得更早,支持 Python 2 和 Python 3,功能更强大,可以指定不同的 Python 版本创建虚拟环境。
安装
# 使用 pip 安装
pip install virtualenv
# 升级
pip install --upgrade virtualenv
使用说明
# 创建虚拟环境(使用当前 Python 版本)
virtualenv myenv
# 指定 Python 版本创建虚拟环境
virtualenv -p /usr/bin/python3.9 myenv
# 创建不带 site-packages 的虚拟环境
virtualenv --no-site-packages myenv
# 激活虚拟环境
source myenv/bin/activate # Linux/Mac
myenv\Scripts\activate # Windows
# 退出虚拟环境
deactivate
# 删除虚拟环境
rm -rf myenv
uv
简介
uv 是由 Astral 团队开发的极速 Python 包管理器和虚拟环境管理工具,使用 Rust 编写。它旨在替代 pip、pip-tools 和 virtualenv,提供更快的速度和更好的用户体验。
安装
# 使用 pip 安装
pip install uv
# 或使用官方安装脚本
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
使用说明
# 创建虚拟环境
uv venv
# 指定 Python 版本创建虚拟环境
uv venv --python 3.11
# 激活虚拟环境
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
# 安装包
uv pip install package_name
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 导出依赖
uv pip freeze > requirements.txt
# 同步依赖
uv pip sync requirements.txt
pipenv
简介
Pipenv 是 Kenneth Reitz 开发的 Python 开发工作流工具,结合了 pip、virtualenv 和 requirements.txt 的功能。它自动创建和管理虚拟环境,并在项目根目录生成 Pipfile 和 Pipfile.lock 文件来管理依赖。
安装
# 使用 pip 安装
pip install pipenv
# 升级
pip install --upgrade pipenv
使用说明
# 初始化项目(创建 Pipfile)
pipenv --three # 使用 Python 3
pipenv --two # 使用 Python 2
# 指定 Python 版本
pipenv --python 3.9
# 安装包
pipenv install package_name
# 安装开发依赖
pipenv install package_name --dev
# 从 Pipfile 安装依赖
pipenv install
# 激活虚拟环境
pipenv shell
# 在虚拟环境中运行命令
pipenv run python script.py
# 卸载包
pipenv uninstall package_name
# 更新依赖
pipenv update
# 查看依赖图
pipenv graph
# 导出 requirements.txt
pipenv requirements > requirements.txt
# 退出虚拟环境
exit
poetry
简介
Poetry 是一个现代化的 Python 依赖管理和打包工具,由 Sébastien Eustace 开发。它使用 pyproject.toml 文件来管理项目配置和依赖,提供依赖解析、虚拟环境管理、构建和发布等功能。
安装
# 使用官方安装脚本
curl -sSL https://install.python-poetry.org | python3 -
# Windows PowerShell
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
# 或使用 pip 安装
pip install poetry
使用说明
# 初始化新项目
poetry new myproject
# 在现有项目中初始化
poetry init
# 安装依赖
poetry install
# 添加依赖
poetry add package_name
# 添加开发依赖
poetry add package_name --group dev
# 更新依赖
poetry update
# 移除依赖
poetry remove package_name
# 显示依赖树
poetry show --tree
# 激活虚拟环境
poetry shell
# 在虚拟环境中运行命令
poetry run python script.py
# 构建项目
poetry build
# 发布到 PyPI
poetry publish
pyenv
简介
pyenv 是一个 Python 版本管理工具,允许在同一系统上安装和切换多个 Python 版本。它主要用于管理 Python 解释器版本,而不是虚拟环境。
安装
# Linux/Mac 使用 git 克隆
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 配置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
# 或使用 Homebrew (Mac)
brew install pyenv
使用说明
# 列出可安装的 Python 版本
pyenv install --list
# 安装指定版本
pyenv install 3.11.0
# 查看已安装的版本
pyenv versions
# 设置全局 Python 版本
pyenv global 3.11.0
# 设置当前目录的 Python 版本
pyenv local 3.10.0
# 设置当前 shell 的 Python 版本
pyenv shell 3.9.0
# 查看当前使用的版本
pyenv version
# 卸载指定版本
pyenv uninstall 3.9.0
pdm
简介
PDM (Python Development Master) 是一个现代的 Python 项目和包管理工具,使用 PEP 582 标准自动发现和导入已安装的包,无需激活虚拟环境。它支持依赖解析、构建和发布等功能。
安装
# 使用 pip 安装
pip install pdm
# 或使用官方安装脚本
curl -sSL https://pdm-project.org/install-pdm.py | python3 -
# 升级
pip install --upgrade pdm
使用说明
# 初始化新项目
pdm init
# 安装依赖
pdm install
# 添加依赖
pdm add package_name
# 添加开发依赖
pdm add -d package_name
# 更新依赖
pdm update
# 移除依赖
pdm remove package_name
# 列出依赖
pdm list
# 显示依赖树
pdm lock -L
# 运行命令
pdm run python script.py
# 构建项目
pdm build
# 发布到 PyPI
pdm publish
conda
简介
Conda 是 Anaconda 和 Miniconda 的包和环境管理工具,主要用于科学计算领域。它不仅可以管理 Python 包,还可以管理其他语言的包和依赖,支持跨平台使用。
安装
# 下载 Anaconda 或 Miniconda 安装包
# Anaconda: https://www.anaconda.com/download
# Miniconda: https://docs.conda.io/en/latest/miniconda.html
# Linux/Mac 安装
bash Anaconda3-2023.09-0-Linux-x86_64.sh
# Windows 运行安装程序
Anaconda3-2023.09-0-Windows-x86_64.exe
# 初始化 conda
conda init bash
使用说明
# 创建新环境
conda create --name myenv python=3.11
# 激活环境
conda activate myenv
# 退出环境
conda deactivate
# 列出所有环境
conda env list
# 删除环境
conda remove --name myenv --all
# 安装包
conda install package_name
# 从 conda-forge 安装
conda install -c conda-forge package_name
# 使用 pip 在 conda 环境中安装
pip install package_name
# 列出已安装的包
conda list
# 更新包
conda update package_name
# 更新 conda
conda update conda
# 导出环境配置
conda env export > environment.yml
# 从配置文件创建环境
conda env create -f environment.yml
对比
总结
Python 环境和依赖管理工具各有特色,选择合适的工具取决于项目需求和个人偏好:
- 简单项目:使用
pip + venv 组合,轻量级且易于上手
- 现代开发:推荐使用
poetry 或 uv,功能全面且速度快
- 科学计算:使用
conda,提供丰富的科学计算包
- 多版本开发:结合
pyenv 管理不同 Python 版本
- 团队协作:使用
poetry 或 pipenv,通过配置文件统一依赖
选择工具时,建议考虑以下因素:
- 项目规模和复杂度
- 团队协作需求
- 性能要求
- 学习成本
- 社区支持和生态
无论选择哪种工具,良好的依赖管理习惯都是项目成功的关键。