跳转到主要内容

pip命令的包装器,用于自动更新需求文件

项目描述

pipm

Build Status

使用pip、需求文件和setup.cfg进行Python包管理。

安装

  • 建议仅在虚拟环境中安装

从PyPI安装

pip install pipm

注意

  • 此工具会操作您所有的需求文件。因此,请确保使用版本控制软件或备份您的文件以跟踪更改。

快速入门

  • pip和pipm命令将正常工作。
  • 为项目创建一个虚拟环境并使用以下命令安装pipm
pip install pipm
  • 创建别名alias pip=pipm或直接使用pipm

I. 安装

  • 从基本需求文件(requirements.txt)安装所有依赖项
pipm install
pipm install --all  # *requirements*.txt - all environment -> test/prod/dev

2. 向项目中添加新包

pipm install pkg-name
pipm install pkg-name --dev # as development dependency
pipm install pkg-name --test # as testing dependency

3. 移除包

  • 移除一个或多个包。它们的依赖项也将被卸载。不会有孤立的包。
pipm uninstall pkg-name

4. 更新requirements.txt中的所有依赖项

pipm update
pipm update --dev

功能

  1. 没有新的文件集。 *-requirements.txt像锁文件一样使用固定版本
  2. 这是一个封装了标准pip的install/uninstall命令的工具。因此,所有的命令行选项都将正常工作。
  3. 处理多个requirements文件和setup.cfg存储抽象依赖。

命令

1. install

  • 封装了标准的pip install命令,并接受所有标准选项

以下是pipm带来的额外功能:

  1. 额外功能
    • 当提供包名时,它将被保存到当前目录下的requirements.txt文件中。如果您有requirements目录结构并且其中包含base.txt,则将使用该文件。否则,它将在当前目录中创建一个。
    • 当没有提供包名时,相当于-r requirements.txt,它将安装当前目录下的所有依赖。
  2. 附加选项:它将按照以下模式搜索匹配项<name>-requirements.txtrequirements/<name>.txtrequirements-<name>.txt,当提供包名时保存到文件中,否则相当于传递要求文件名。
    1. --dev - 保存到开发需求
    2. --prod - 保存到生产需求
    3. --test - 保存到测试需求
    4. --doc - 保存到文档需求
    5. --env <name> - 如果您有任何属于单独文件的特殊需求集合,可以在这里传递名称。

2. uninstall

  • 封装了标准的pip uninstall命令
  • 别名rm可用
  • 在卸载包时,此命令还会检查不再由用户安装的任何包所依赖的包,并删除它们
  • 当然,它也会从requirements文件中删除包

3. update

  • 新命令
  • 相当于使用带有--upgrade标志的pip install
  • 在没有参数的情况下更新单个包或整个环境。
  • 默认情况下,包将交互式更新
    • --auto-update设置为禁用此功能

4. save/freeze

  • 扩展了标准freeze命令,以保存当前安装的包

开发

  • 克隆仓库并创建新的虚拟环境
git clone git@github.com:jnoortheen/pipm.git
cd pipm
pew new pipm -a .
pip install -r dev-requirements.txt
  • 以从本地源进行测试
pip install -e .
  • 提交信息应遵循风格指南。

测试

  • 从根目录运行invoke test

替代方案及其问题(个人看法)

  1. pipenv
    • 适用于仅有一个虚拟环境的项目本地开发
    • 当需要部署到生产服务器或保持多个虚拟环境时,则不适用
    • 最好单独使用pew而不是随该工具提供的shell命令
  2. pip-tools
    • 另一组要跟踪的文件,以及要记住的附加命令
  3. poetry
    • pipenv更健壮
    • ~~我遇到的问题与在远程服务器/Docker环境中安装依赖项有关。~~
    • 较长的安装/更新时间 ~~随着项目的成熟,此问题可能会得到解决。~~
    • 自1.1版本以来,这些问题已得到解决。
    • 建议在可能的情况下使用poetry创建新项目。
  4. dephell
    • 尚未使用。但它似乎也处理要求文件和其他格式。

TODOs

  • rm将检查包是否存在于setup.cfg中

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

pipm-22.2.3.tar.gz (11.9 kB 查看哈希值)

上传时间

构建分布

pipm-22.2.3-py3-none-any.whl (13.9 kB 查看哈希值)

上传时间 Python 3

支持者