Skip to content

Python 包管理工具

什么是包管理工具

包管理工具是用于管理Python包的工具,包括安装、升级、卸载、列出已安装的包等功能。Python常用的包管理工具有pip、conda、poetry等。

pip

pip是Python的默认包管理工具,用于安装和管理Python包。

安装pip

Python 3.4+ 和 Python 2.7.9+ 已经内置了pip,无需额外安装。可以通过以下命令检查pip是否已安装:

bash
pip --version
# 或
pip3 --version

如果没有安装pip,可以通过以下方式安装:

Windows安装

  1. 下载get-pip.py脚本:

    bash
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  2. 运行脚本:

    bash
    python get-pip.py

Linux/macOS安装

bash
# 下载并运行脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py

常用命令

安装包

bash
# 安装最新版本
pip install package_name

# 安装指定版本
pip install package_name==1.0.0

# 安装大于等于指定版本
pip install package_name>=1.0.0

# 安装小于等于指定版本
pip install package_name<=1.0.0

# 安装包并指定源
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple

# 从requirements.txt文件安装
pip install -r requirements.txt

# 安装开发版本
pip install -e .

升级包

bash
# 升级指定包
pip install --upgrade package_name

# 升级pip自身
pip install --upgrade pip

# 升级所有已安装的包
pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U

卸载包

bash
# 卸载指定包
pip uninstall package_name

# 卸载多个包
pip uninstall package1 package2 package3

# 不询问直接卸载
pip uninstall -y package_name

列出已安装的包

bash
# 列出所有已安装的包
pip list

# 列出可升级的包
pip list --outdated

# 生成requirements.txt文件
pip freeze > requirements.txt

查看包信息

bash
# 查看指定包的信息
pip show package_name

# 查看指定包的详细信息
pip show -f package_name

搜索包

bash
# 搜索包
pip search package_name

清理缓存

bash
# 清理缓存
pip cache purge

# 查看缓存目录
pip cache dir

配置pip源

临时使用

bash
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple

永久配置

Linux/macOS

创建或编辑~/.pip/pip.conf文件:

bash
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOF
Windows

创建或编辑%APPDATA%\pip\pip.ini文件:

ini
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

常用pip源

  1. 清华大学https://pypi.tuna.tsinghua.edu.cn/simple
  2. 阿里云https://mirrors.aliyun.com/pypi/simple/
  3. 中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/
  4. 豆瓣https://pypi.douban.com/simple/
  5. 华为云https://mirrors.huaweicloud.com/repository/pypi/simple/

conda

conda是Anaconda和Miniconda的包管理工具,不仅可以管理Python包,还可以管理其他语言的包。

安装conda

可以通过安装Anaconda或Miniconda来获得conda:

  1. Anaconda:包含了Python解释器和大量常用的科学计算包,适合数据科学和机器学习开发。

  2. Miniconda:只包含Python解释器和conda,体积较小,适合需要自定义环境的用户。

常用命令

环境管理

bash
# 创建环境
conda create -n env_name python=3.8

# 激活环境
# Windows
activate env_name
# Linux/macOS
source activate env_name

# 退出环境
# Windows
deactivate
# Linux/macOS
source deactivate

# 列出所有环境
conda env list

# 复制环境
conda create -n new_env --clone old_env

# 删除环境
conda remove -n env_name --all

安装包

bash
# 安装指定包到当前环境
conda install package_name

# 安装指定包到指定环境
conda install -n env_name package_name

# 安装指定版本
conda install package_name=1.0.0

# 从requirements.txt安装
conda install --file requirements.txt

升级包

bash
# 升级指定包
conda update package_name

# 升级所有包
conda update --all

# 升级conda自身
conda update conda

# 升级anaconda
conda update anaconda

卸载包

bash
# 卸载指定包
conda remove package_name

# 卸载指定环境的包
conda remove -n env_name package_name

列出已安装的包

bash
# 列出当前环境的所有包
conda list

# 列出指定环境的所有包
conda list -n env_name

搜索包

bash
# 搜索包
conda search package_name

配置conda源

添加源

bash
# 添加清华大学源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

查看源

bash
conda config --show channels

删除源

bash
conda config --remove channels channel_name

poetry

poetry是一个现代的Python包管理工具,用于管理Python依赖和项目构建。

安装poetry

Windows安装

bash
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

Linux/macOS安装

bash
curl -sSL https://install.python-poetry.org | python3 -

常用命令

初始化项目

bash
# 在当前目录初始化项目
poetry init

# 创建新的项目目录并初始化
poetry new project_name

安装依赖

bash
# 安装所有依赖
poetry install

# 安装生产依赖
poetry install --no-dev

# 安装指定包
poetry add package_name

# 安装开发依赖
poetry add --dev package_name

运行命令

bash
# 在虚拟环境中运行命令
poetry run python script.py

# 在虚拟环境中启动Python解释器
poetry run python

# 在虚拟环境中启动shell
poetry shell

构建项目

bash
# 构建项目
poetry build

发布项目

bash
# 发布项目到PyPI
poetry publish

# 发布到测试PyPI
poetry publish -r test-pypi

查看依赖

bash
# 查看依赖树
poetry show --tree

# 查看可升级的依赖
poetry show --outdated

虚拟环境

虚拟环境是Python项目的隔离环境,用于避免不同项目之间的依赖冲突。

创建虚拟环境

使用venv模块

bash
# 创建虚拟环境
python -m venv venv_name

# Windows激活
venv_name\Scripts\activate.bat

# Linux/macOS激活
source venv_name/bin/activate

# 退出虚拟环境
deactivate

使用virtualenv

bash
# 安装virtualenv
pip install virtualenv

# 创建虚拟环境
virtualenv venv_name

# Windows激活
venv_name\Scripts\activate.bat

# Linux/macOS激活
source venv_name/bin/activate

# 退出虚拟环境
deactivate

requirements.txt

requirements.txt是一个文本文件,用于记录项目依赖的包及其版本。

生成requirements.txt

bash
# 使用pip生成
pip freeze > requirements.txt

# 使用conda生成
conda list -e > requirements.txt

从requirements.txt安装

bash
# 使用pip安装
pip install -r requirements.txt

# 使用conda安装
conda install --file requirements.txt

依赖管理最佳实践

  1. 使用虚拟环境:为每个项目创建独立的虚拟环境,避免依赖冲突。
  2. 固定依赖版本:在requirements.txt中固定依赖的版本,确保项目在不同环境中一致运行。
  3. 区分生产依赖和开发依赖:将生产依赖和开发依赖分开管理,减少生产环境的依赖数量。
  4. 定期更新依赖:定期更新依赖,修复安全漏洞和bug。
  5. 使用依赖管理工具:根据项目需求选择合适的依赖管理工具,如pip、conda、poetry等。

总结

Python常用的包管理工具有pip、conda、poetry等,每个工具都有其特点和适用场景。pip是Python的默认包管理工具,适合大多数项目;conda适合数据科学和机器学习项目;poetry是一个现代的包管理工具,适合管理复杂的项目依赖。

选择合适的包管理工具可以提高开发效率,避免依赖冲突,确保项目在不同环境中一致运行。