全部文章

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 命令行工具(隔离环境) 安装像 blackyoutube-dl 这类工具

工具对比

  • conda:适合科学计算,解决复杂依赖(如 NumPy 的 MKL 优化版)。

  • poetry:适合开发者管理项目依赖和打包,自动处理版本兼容性。

  • pipenv:曾被官方推荐,但开发活跃度下降,逐渐被 poetry 取代。


​​5. 学习资源​​

  1. ​​官方文档​​:
  2. ​​教程​​:

    3.书籍

    • 《Python Packaging User Guide》(免费在线版)

    • 《Effective Python》第 57 条:用虚拟环境隔离项目


建议从 pip 和 venv 开始,再扩展到其他工具。尝试在一个实际小项目中使用不同工具,理解它们的差异和适用场景!

  • 实践建议

    1. 从 pip 基础命令开始,熟悉安装、卸载和导出依赖。

    2. 用 venv 或 virtualenv 为每个项目创建独立环境。

    3. 尝试用 poetry 或 pipenv 管理一个实际项目。

    4. 在遇到版本冲突时,使用 pip install --upgrade 或降低版本号解决。


附:常见问题

  • pip 安装慢:换国内镜像源(如清华、阿里云)。

  • 权限错误:在命令前加 sudo(Linux/macOS),或用 --user 安装到用户目录。

  • 兼容性冲突:使用 poetry 或 pipenv 自动解析依赖树。

 

posted @ 2025-04-13 10:14  指尖下的世界  阅读(103)  评论(0)    收藏  举报