Python 包管理工具以及虚拟环境管理
包管理
1. pip 和 pip3 是什么?
-
pip 是 Python 的官方包管理工具,用于安装、卸载和管理 Python 第三方库。它的名字来源于 “Pip Installs Packages”。
-
pip3 是专门为 Python 3 设计的 pip 命令。在同时安装 Python 2 和 Python 3 的系统中,
pip
默认可能指向 Python 2,而pip3
明确指向 Python 3。
注意:随着 Python 2 的淘汰,大多数系统现在默认pip
已指向 Python 3,pip3
可能只是pip
的别名。 - Python ≥3.4 和 ≥2.7.9 的版本已自带 pip,无需额外安装。
2. 系统学习 pip
基础用法
命令 | 功能 | 示例 |
---|---|---|
pip install <包名> |
安装包 | pip install requests |
pip uninstall <包名> |
卸载包 | pip uninstall numpy |
pip list |
列出已安装的包 | pip list |
pip show <包名> |
查看包信息 | pip show pandas |
pip freeze > requirements.txt |
导出依赖列表 | 用于项目环境迁移 |
pip install -r requirements.txt |
根据文件安装依赖 | 重建环境 |
# 安装包 pip install package_name # 安装最新版 pip install package_name==1.0.4 # 安装指定版本 # 卸载包 pip uninstall package_name # 查看已安装包及其版本 pip list # 生成依赖清单(用于共享项目) pip freeze > requirements.txt # 从 requirements.txt 安装依赖 pip install -r requirements.txt # 检查可更新的包 pip list --outdated # 升级包 pip install --upgrade package_name
进阶用法
-
版本控制
pip install django==4.2.0 # 安装指定版本 pip install "django>=4.0" # 安装不低于 4.0 的版本
- 从源码或本地安装
pip install . # 安装当前目录的包(setup.py) pip install git+https://github.com/user/repo.git # 从 Git 仓库安装
- 镜像加速
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple # 使用清华镜像
永久配置镜像:在 ~/.pip/pip.conf
(Linux/macOS)或 C:\Users\用户名\pip\pip.ini
(Windows)中写入:
[global] index-url = https://mirrors.aliyun.com/pypi/simple/
批量安装
pip install -r requirements.txt
requirements.txt内容:
gradio>=3.40.0
transformers>=4.35.0
torch>=2.0.0
gtts>=2.3.2
Pillow>=9.5.0
sentencepiece>=0.1.99
虚拟环境
-
为什么需要虚拟环境:隔离不同项目的依赖,避免版本冲突。
- 使用
venv
(Python 内置):
python -m venv myenv # 创建虚拟环境 source myenv/bin/activate # 激活(Linux/macOS) myenv\Scripts\activate # 激活(Windows) deactivate # 退出
使用 virtualenv
(第三方工具):
pip install virtualenv virtualenv myenv # 创建
其他环境和包管理工具
(1) Conda
- 跨平台包管理:除了 Python 包,还支持非 Python 包(如 C/C++库)。
- 环境管理:直接集成虚拟环境功能。
- 适用场景:数据科学(与 Anaconda 结合)、需要复杂依赖管理的场景。
- 常用命令:
conda create --name myenv python=3.9
conda activate myenv
conda install numpy
(2) Poetry
- 依赖管理与打包工具:自动处理依赖版本,生成
pyproject.toml
。 - 优点:精准的依赖解析、支持发布包到 PyPI。
- 安装:
pip install poetry poetry new myproject # 创建新项目 poetry add requests # 添加依赖
(3) Pipenv
- 结合 pip + virtualenv:自动管理虚拟环境和依赖文件(
Pipfile
)。 - 优点:简化工作流,支持开发环境与非开发环境依赖分离。
pip install pipenv pipenv install requests # 安装包并生成 Pipfile pipenv shell # 进入虚拟环境
(4) 其他工具
- Wheel:二进制包格式,加速安装。
- Setuptools:传统的包构建工具,通常与
setup.py
配合使用。
4. 如何选择工具?
场景 | 推荐工具 |
---|---|
简单脚本开发 | pip + venv |
数据科学/复杂非Python依赖 | Conda |
项目开发(精准依赖) | Poetry/Pipenv |
包发布 | Setuptools + Twine |
工具 | 特点 | 适用场景 |
---|---|---|
conda | 跨平台,支持非 Python 包(如 C 库),自带环境管理 | 数据科学(Anaconda/Miniconda 发行版) |
poetry | 依赖解析、打包、发布一体化,使用 pyproject.toml |
项目依赖管理和发布 |
pipenv | 结合 pip 和虚拟环境,生成 Pipfile 管理依赖 |
简化虚拟环境和依赖管理 |
pipx | 全局安装 Python 命令行工具(隔离环境) | 安装像 black 、youtube-dl 这类工具 |
工具对比
-
conda:适合科学计算,解决复杂依赖(如 NumPy 的 MKL 优化版)。
-
poetry:适合开发者管理项目依赖和打包,自动处理版本兼容性。
-
pipenv:曾被官方推荐,但开发活跃度下降,逐渐被 poetry 取代。
5. 学习资源
- 官方文档:
- 教程:
3.书籍:
-
-
《Python Packaging User Guide》(免费在线版)
-
《Effective Python》第 57 条:用虚拟环境隔离项目
-
建议从 pip
和 venv
开始,再扩展到其他工具。尝试在一个实际小项目中使用不同工具,理解它们的差异和适用场景!
-
实践建议:
-
从
pip
基础命令开始,熟悉安装、卸载和导出依赖。 -
用
venv
或virtualenv
为每个项目创建独立环境。 -
尝试用
poetry
或pipenv
管理一个实际项目。 -
在遇到版本冲突时,使用
pip install --upgrade
或降低版本号解决。
-
附:常见问题
-
pip
安装慢:换国内镜像源(如清华、阿里云)。 -
权限错误:在命令前加
sudo
(Linux/macOS),或用--user
安装到用户目录。 -
兼容性冲突:使用
poetry
或pipenv
自动解析依赖树。