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

对比

工具类型主要功能优点缺点
pip包管理器安装和管理 Python 包官方工具,简单易用不管理虚拟环境,依赖冲突问题
venv虚拟环境管理创建隔离的 Python 环境Python 标准库,无需安装功能相对简单
virtualenv虚拟环境管理创建隔离的 Python 环境功能强大,支持多版本需要单独安装
uv包和环境管理极速包管理和虚拟环境速度快,现代化相对较新,生态尚在发展
pipenv项目管理依赖和虚拟环境管理自动管理虚拟环境,Pipfile 文件依赖解析有时较慢
poetry项目管理依赖、构建和发布功能全面,pyproject.toml 标准学习曲线较陡
pyenv版本管理管理 Python 解释器版本多版本切换方便只管理解释器,不管理包
pdm项目管理依赖和项目管理PEP 582 支持,无需激活虚拟环境相对较新,生态较小
conda包和环境管理跨语言包和环境管理科学计算生态丰富,跨平台安装包较大,启动较慢

总结

Python 环境和依赖管理工具各有特色,选择合适的工具取决于项目需求和个人偏好:

  1. 简单项目:使用 pip + venv 组合,轻量级且易于上手
  2. 现代开发:推荐使用 poetryuv,功能全面且速度快
  3. 科学计算:使用 conda,提供丰富的科学计算包
  4. 多版本开发:结合 pyenv 管理不同 Python 版本
  5. 团队协作:使用 poetrypipenv,通过配置文件统一依赖

选择工具时,建议考虑以下因素:

  • 项目规模和复杂度
  • 团队协作需求
  • 性能要求
  • 学习成本
  • 社区支持和生态

无论选择哪种工具,良好的依赖管理习惯都是项目成功的关键。

声明:本站所有文章,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。-- mikigo