Python——使用pip管理包

使用 pip 管理 Python 包的常见用法如下:


管理包(安装、升级、卸载和查看等)

  • 安装最新版本:

    1
    pip install package_name
  • 安装指定版本:

    1
    pip install package_name==1.2.3
  • 从本地文件安装:

    1
    pip install /path/to/package.whl
  • 从 GitHub 安装:

    1
    pip install git+https://github.com/user/repo.git
  • 升级到最新版本:

    1
    pip install --upgrade package_name
  • 卸载包:

    1
    pip uninstall package_name
  • 查看某个包的详细信息:

    1
    pip show package_name
  • 列出所有已安装的包:

    1
    pip list

搜索包

  • 搜索包:

    1
    pip search package_name
    • 这个命令已经弃用,现在需要访问官网才行 https://pypi.org/
  • 搜索包版本:

    1
    pip index versions package_name

检查包更新

  • 检查哪些包需要更新:
    1
    pip list --outdated

配置镜像源

  • 临时使用镜像源:

    1
    pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 永久配置镜像源:

    1
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

其他常用命令

  • 查看帮助:

    1
    pip --help
  • 查看版本:

    1
    pip --version

pip批量导出或安装环境配置

  • 可以使用 pip freeze 命令导出当前 Python 环境的配置

  • 下面的pip freeze 命令将在当前目录下创建一个名为 requirements.txt 的文件,并写入当前环境中已安装的所有包及其版本信息

    1
    pip freeze > requirements.txt
  • 下面的命令可以在任何地方根据 requirements.txt 中列出的包及其版本信息重新安装所有必需的包,从而重建相同的环境(其中-r参数用于指定依赖性的文件名):

    1
    pip install -r requirements.txt

从源码安装包

  • 以通过源码安装transformers为例子
  • clone仓库git clone https://github.com/huggingface/transformers.git
  • 进入目录cd transformers
  • 安装依赖(准备项) :确保你的Python环境中已经安装了setuptools等必要的依赖。如果没有安装,可以先使用pip install setuptools进行安装
  • 安装(推荐方式)pip install .
    • 注意:这种方式会将transformers安装到你的Python环境中,但如果后续你对源码进行了修改,需要重新执行安装命令才能使修改生效
    • 其他安装方式(可编辑安装)pip install -e .命令,该命令会将克隆的仓库链接到你的Python库路径,这样Python不仅会在正常的库路径中搜索库,也会在你克隆到的文件夹中进行查找,方便修改后生效
  • 安装完成后,对于还未发行的版本,版本名称可能是带有后缀.dev等的(依赖可能识别不了)

附录:安装带 -e 的含义

  • 是否使用 -e 在安装方式和后续开发行为上有本质区别
  • 具体来说 pip install .pip install -e . 都是用来安装当前目录下的 Python 包的命令,但安装本质不同

pip install . (标准安装)

  • 将当前目录(. 代表当前目录)下的 Python 包进行复制安装(静态)
  • 安装过程
    • 1)pip 会查找当前目录中的 setup.pypyproject.toml 文件
    • 2)根据配置,将包的源代码复制到 Python 环境的 site-packages 目录下
    • 3)同时安装包的依赖项
  • 安装后,你在项目源码中做的任何修改,不会自动反映到已安装的包中,即不可编辑
    • 如果你修改了源代码,必须重新运行 pip install . 来更新已安装的包,才能让改动生效
  • 当你准备发布一个稳定版本时,通常使用这种方式

pip install -e . (可编辑安装 / 开发安装)

  • -e--editable 的缩写,进行的是可编辑安装开发安装(动态链接)
  • 安装过程
    • 1)pip 同样查找 setup.pypyproject.toml
    • 2)它不会复制源代码,而是在 site-packages 目录下创建一个指向你当前项目目录的符号链接(symlink) 或特殊的 .pth 文件
    • 3)这样,Python 解释器在导入这个包时,会直接从你的项目源码目录加载模块
  • 你在项目源码中做的任何修改,立即生效 ,不需要重新安装,即是可编辑
    • 非常适合在开发过程中使用,可以快速测试代码变更
  • 包的依赖项仍然会被安装到环境中
  • 包的“安装位置”就是开发目录,删除开发目录会导致包“消失”

附录:安装包的用法

常规用法

  • 使用普通命令足以

    1
    pip install package==1.1.0
  • 若已经安装有包(不管是升级还是降级均可),想要强制重新安装,使用:

    1
    pip install package==1.1.0 --force-reinstall
  • 已经有包的情况下,也可以使用:

    1
    2
    pip3 uninstall package
    pip3 install package==1.1.0

推荐用法

  • 升级包时使用 --upgrade 参数,确保升级操作能够执行

    1
    pip install --upgrade package==1.1.0
    • 若没有 --upgrade 参数可能会默认不安装,因为认为当前包已经符合版本(高于目标版本)
  • 降级包时加一个强制参数

    1
    pip install package==1.1.0 --force-reinstall