python管理依赖关系库

一、poetry

Poetry 是一个用于管理 Python 项目依赖关系和构建工具的工具。它提供了一个简单的命令行界面,可以帮助您创建、管理和发布 Python 项目,使用方法:command [options] [arguments]
官网:https://python-poetry.org/docs/

  1. 主要功能和用途
  • 创建新的 Python 项目:Poetry 提供了 new 命令,可以创建一个新的 Python 项目,并设置项目的基本配置。
  • 管理依赖项:Poetry 使用 pyproject.toml 文件来管理项目的依赖项。您可以通过运行 add 命令添加依赖项,指定版本要求,并自动解析依赖关系。Poetry 还支持锁定依赖项的版本,以确保项目在不同环境中的一致性。
  • 构建和发布项目:Poetry 提供了 build 命令,用于构建项目。您可以选择将项目打包为源码分发包或二进制分发包。此外,Poetry 还支持将项目发布到 PyPI 或私有仓库。
  • 虚拟环境管理:Poetry 可以为每个项目创建和管理独立的虚拟环境。这使得项目的依赖项与其他项目隔离开来,确保项目的环境独立性和可重现性。
  • 运行命令和脚本:Poetry 允许您在项目的虚拟环境中运行命令和脚本。这样可以确保命令和脚本在正确的环境中执行,并且可以访问项目的依赖项。
  1. 主要命令
  • new:在指定路径下创建一个新的 Python 项目。
  • init:在当前目录创建一个基本的 pyproject.toml 文件。
  • add:向 pyproject.toml 文件添加新的依赖项。
  • install:安装项目的依赖项,pyproject.toml问价中全部的依赖项。
  • check:验证 pyproject.toml 文件的内容以及与 poetry.lock 文件的一致性。
  • config:管理配置设置。
  • list:列出可用的命令。
  • about:显示有关 Poetry 的信息。
  • build:默认情况下,构建项目为一个源码分发包(tarball)和一个二进制分发包(wheel)。
  • export:将锁定文件以其他格式导出。
  • help:显示命令的帮助信息。
  • lock:锁定项目的依赖项。
  • publish:将包发布到远程仓库。
  • remove:从项目的依赖项中移除一个包。
  • run:在适当的环境中运行命令。
  • search:在远程仓库上搜索包。
  • shell:在虚拟环境内启动一个shell。
  • show:显示有关包的信息。
  • update:根据 pyproject.toml 文件更新依赖项。
  • version:显示项目的版本信息,或根据提供的有效版本规则进行版本升级。
  • cache clear:按名称清除 Poetry 的缓存。您可以指定要清除的特定缓存名称。例如,要清除名为 http 的缓存,可以运行以下命令:
  • cache list:列出 Poetry 的缓存列表。这将显示已存在的缓存名称和路径
  • env info:显示有关当前环境的信息。这将显示有关 Poetry 正在使用的 Python 解释器、虚拟环境路径和其他相关信息的详细信息。
  • env list:列出与当前项目关联的所有虚拟环境。这将显示项目中创建的所有虚拟环境的名称和路径。
  • env remove:删除与项目关联的虚拟环境。您可以指定要删除的特定虚拟环境名称。
  • self add:将额外的包添加到 Poetry 的运行环境中。这可以让您在 Poetry 运行时环境中安装和使用额外的包,而不会影响全局 Python 环境。
  • self install:安装 Poetry 安装的锁定包,包括附加组件。这将安装 Poetry 安装所需的所有包,以及附加组件,以确保 Poetry 的正常运行。
  • self lock:锁定 Poetry 安装的系统要求。这将生成一个锁定文件,其中包含 Poetry 安装所需的所有系统要求的确切版本。这有助于确保在不同环境中使用相同的系统要求。
  • self remove:从 Poetry 的运行环境中删除额外的包。这可以用于卸载不再需要的包,以减少 Poetry 运行时环境的大小。
  • self show:显示 Poetry 运行环境中的包。这将列出 Poetry 运行时环境中安装的所有包,包括其版本号和其他相关信息。
  • self show plugins:显示当前安装的插件的信息。这将列出当前已安装的 Poetry 插件,并显示有关插件的详细信息。
  • self update:将 Poetry 更新到最新版本。这将自动下载并安装最新版本的 Poetry,以确保您使用的是最新的功能和改进。
  • source add:为项目添加源配置。您可以使用此命令将其他源添加到项目中,以便在解析和安装依赖项时使用这些源。源可以是 PyPI、私有仓库或其他支持的源。
  • source remove:移除项目配置的源。使用此命令可以从项目中删除先前添加的源配置。
  • source show:显示项目配置的源信息。这将列出项目中配置的所有源,并显示与每个源相关的详细信息,例如源的名称、URL 和优先级等。
  1. poetry优点
  • 简化依赖项管理:Poetry 提供了一个统一的方式来管理项目的依赖项。您可以在 pyproject.toml 文件中指定项目的依赖项,并且可以使用 Poetry 的命令来安装、更新和删除依赖项。这简化了依赖项的管理过程,使得项目的环境配置更加简单和可靠。
  • 虚拟环境和依赖项隔离:Poetry 支持创建和管理虚拟环境,这使得每个项目都可以拥有独立的 Python 环境。这样可以避免不同项目之间的依赖项冲突,并且可以确保每个项目都使用正确的依赖项版本。
  • 自动生成和维护 pyproject.toml 文件:Poetry 可以自动为您的项目生成和维护 pyproject.toml 文件。这个文件包含了项目的元数据、依赖项和构建配置等信息。通过自动生成和维护这个文件,Poetry 简化了项目配置的过程,使得项目的管理更加方便。
  • 构建和发布支持:Poetry 提供了一些命令来构建和发布项目。您可以使用 Poetry 构建项目的分发包,并且可以轻松地发布到 PyPI 或其他包管理平台。这使得项目的构建和发布过程更加简单和一致。
  1. poetry缺点
  • 学习曲线:Poetry 的功能非常丰富,但这也意味着它有一个相对陡峭的学习曲线。对于新用户来说,可能需要一些时间来熟悉 Poetry 的命令和工作流程。然而,一旦掌握了基本的概念和操作,Poetry 可以提供强大的依赖项管理能力。
  • 社区支持:尽管 Poetry 的用户群体在不断增长,但与其他一些依赖项管理工具相比,Poetry 的社区支持可能相对较小。这意味着在遇到问题时,可能需要花费一些时间来寻找解决方案或寻求帮助。
二、pipdeptree

pipdeptree 是一个用于查看 Python 项目依赖关系的工具。它可以显示项目所依赖的库以及它们之间的依赖关系树。
使用 pipdeptree,可以轻松地了解项目中使用的所有库及其版本,并查看它们之间的依赖关系。这对于管理项目的依赖项、解决依赖冲突以及确保项目的稳定性非常有用。
通过运行 pipdeptree 命令,它会分析当前环境中已安装的库,并以树状结构的形式显示它们之间的依赖关系。每个库都会显示其名称、版本号以及它所依赖的其他库。
git:https://github.com/tox-dev/pipdeptree

  1. 主要功能和用途
  • 查看项目的依赖关系树。
  • 检查依赖项的版本,以确保项目所需的库版本符合要求。
  • 检测潜在的依赖冲突。
  • 导出依赖关系到文件,以便与他人共享或备份。
  1. 主要命令配置
  • -h、–help:显示帮助信息,包括所有可用的配置选项和用法示例。
  • -v,–version:显示程序的版本号
  • -p、–packages:指定要显示依赖关系的包或模块,如:pipdeptree -p requests,beautifulsoup4,可与-f、-j一起使用:pipdeptree -p requests,beautifulsoup4 -f > requirements.txt
  • -w、–warn:显示警告消息,例如循环依赖或不明确的依赖关系,如:pipdeptree -w silence,silence在输出中不显示警告信息;suppress仅显示警告摘要,而不显示详细的警告信息;fail将警告视为错误,并以非零退出代码退出。
  • -f、–freeze:依赖项导文件requirements.txt,如:pipdeptree -f > requirements.txt
  • -j、–json:导出到 JSON 文件,如:pipdeptree -j > dependencies.json
  • -e、–exclude:指定要排除的包或模块,如:pipdeptree -e requests,beautifulsoup4,不会显示 requests,beautifulsoup4 依赖关系树,可与-f、-j一起使用:pipdeptree -e requests,beautifulsoup4 -f > requirements.txt
  • -d、–depth:限制树的深度,默认为无限深度,如:pipdeptree -d 0,可与-f、-j一起使用:pipdeptree -d 0 -f > requirements.txt
  • -r、–reverse:以反向依赖关系的方式显示依赖树,如:pipdeptree -r
  • -l、–local-only:显示当前 Python 环境中已安装的包列表,如:pipdeptree -l
  • -u、–user-only:显示当前 Python 环境中已安装的包的可升级版本,如:pipdeptree -l
  • –encoding:用于指定输出时使用的编码,默认为 UTF-8,如:pipdeptree --encoding
  • –json-tree:输出嵌套的 JSON 格式,模仿文本格式的布局,如:pipdeptree --json-tree > dependencies.json
  • -mermaid:生成 Mermaid.js 格式的流程图,如:pipdeptree --mermaid > dependencies.mmd
  • –graph-output:使用 Graphviz 渲染依赖关系图,值可以是 dot、jpeg、pdf、png、svg 等格式,如:pipdeptree --graph-output png > dependencies.png
  1. pipdeptree优点
  • 展示依赖关系:pipdeptree能够清晰地展示项目的依赖关系,帮助用户理解各个库之间的联系和层级关系。
  • 生成多种格式的文件:除了文本格式的文件,pipdeptree还能生成多种图形格式的文件,如JSON、Graph、PDF、PNG等,这使得依赖关系图更加直观和易于理解。
  • 逆向查找依赖库:pipdeptree可以逆向查找某个依赖库是怎么引入进来的,这有助于用户理解和解决依赖冲突。
  • 发现循环依赖:pipdeptree可以检测项目中的循环依赖,这是一个非常重要的功能,因为循环依赖可能会导致项目运行不稳定。
  1. pipdeptree缺点
  • 无法穿透虚拟环境:如果要在虚拟环境中工作,必须在该虚拟环境中安装pipdeptree。因为跨虚拟环境会出现重复或冲突等情况,因此需要限定虚拟环境。
  • 每个虚拟环境需要单独安装:如果项目使用了多个虚拟环境,那么每个虚拟环境都需要单独安装pipdeptree,这可能会增加额外的复杂性。
三、pigar

pigar 是一个用于生成 Python 项目的依赖项清单的工具。它可以分析项目的源代码,并自动检测项目所使用的外部库和其对应的版本信息,然后生成一个包含这些依赖项的 requirements.txt 文件。
使用 pigar,可以避免手动维护和更新 requirements.txt 文件的繁琐工作。它可以自动检测项目中导入的模块,并根据需要安装适当的版本。这对于确保项目在不同环境中的一致性非常有用,例如在开发、测试和部署过程中。
pigar 还提供了一些额外的功能,例如生成依赖图、检查过期的依赖项以及支持自定义配置等。它是一个方便的工具,可以简化 Python 项目的依赖项管理过程,并帮助确保项目的依赖项保持最新和一致。

  1. 命令参数
  • –version:显示 pigar 的版本信息并
  • -l、–log-level:设置日志级别,可以选择 ERROR、WARNING、INFO、DEBUG。默认为 WARNING。
  • -h、–help:显示此帮助消息并退
  • check:检查 requirements.txt 中列出的包或分发的最新版本。显示是否有可用的更新版本。
  • generate:为给定的 Python 项目生成 requirements.txt 文件。它会分析项目的源代码,并生成一个包含项目所需依赖项及其版本的清单文件。
  • gohome:前往项目的主页,用于报告错误或获取更多信息。这将打开 pigar 的 GitHub 主页,可以在那里提交 Bug 报告或浏览更多相关信息。
  • indexdb:执行与索引数据库相关的操作。这些操作包括构建索引数据库、更新索引数据库等。
  • search:通过顶级导入/模块名称搜索包或分发。可以提供一个或多个导入/模块名称,pigar 将搜索与这些名称相关的包或分发。
  1. pigar generate,分析项目的源代码生成依赖文件
  • -f、–requirement-file:指定要生成的 requirements.txt 文件,如:pigar generate -f requirements.txt
  • –with-referenced-comments:在生成的 requirements.txt 文件中添加注释,列出导入该依赖项的所有文件,如:pigar generate -f requirements.txt --with-referenced-comments
  • -c、–comparison-specifier [|~=|>=|>]:版本比较符号的一部分,例如 abc1.0。默认为 ==。更多信息可以参考 PEP 440。
  • –show-differences / --dont-show-differences:是否在覆盖 requirements.txt 文件时显示差异。
  • –visit-doc-string:在分析导入语句时考虑文档字符串中的 doctest。
  • -e、–exclude-glob TEXT:排除匹配给定通配符的文件和目录进行搜索。默认为 **/.git, **/.hg, **/.svn, **/pycache, venv。
  • –follow-symbolic-links / --dont-follow-symbolic-links:是否跟随所有符号链接到最终目标。默认为跟随符号链接。
  • –dry-run:不实际写入 requirements.txt 文件,只打印文件内容。
  • -i、–index-url TEXT:Python Package Index 的基本 URL,应指向符合 PEP 503(简单仓库 API)的存储库
  • –include-prereleases:是否包括预发布和开发版本。
  • –question-answer [ask|yes|no]:是否以 “yes” 或 “no” 回答所有可能的问题,否则需要手动确认。默认为 “ask”。
  • –auto-select:当找到同一模块的多个包或分发时,是否自动选择最佳匹配的一个或全部。否则需要手动交互选择。
  • –enable-feature [requirement-annotations]:是否启用实验性功能。“requirement-annotations” 功能允许通过添加注释来声明隐式的包/分发或顶级导入名称。
  • -h、–help:显示此帮助消息并退出
  1. pigar check,检查 requirements.txt 中列出的包或分发的最新版本。显示是否有可用的更新版本。
  • -f, --requirement-file FILE:指定要检查的需求文件的路径。可以将此选项与要检查的 requirements.txt 文件的路径一起使用。
  • -i, --index-url TEXT:指定 Python Package Index 的基本 URL。默认情况下,它是指向符合 PEP 503(简单存储库 API)的仓库的 URL。如果希望使用其他索引源,可以使用此选项指定不同的 URL。
  • –include-prereleases:包括预发布和开发版本的依赖项。使用此选项将检查并包括预发布版本和开发版本的依赖项。
  • –format [table|requirements|json]:指定输出的结构格式。可以选择 table、requirements 或 json。默认为 table,以表格形式输出依赖项信息。requirements 格式不能处理复杂的情况,例如 abc>=1.2.0,<1.3.0。如果需要更复杂的输出格式,可以选择 json。
  • -h, --help:显示帮助信息并
  1. pigar search,通过顶级导入/模块名称搜索包或分发。可以提供一个或多个导入/模块名称,pigar 将搜索与这些名称相关的包或分发。
  • -i, --index-url TEXT:指定 Python 包索引的基本 URL。默认情况下,它是指向符合 PEP 503(简单存储库 API)的仓库的 URL。如果希望使用其他索引源,可以使用此选项指定不同的 URL。
  • –include-prereleases:包括预发布和开发版本的包。使用此选项将搜索并包括预发布版本和开发版本的包。
  • –format [table|json]:指定输出的结构格式。可以选择 table 或 json。默认为 table,以表格形式输出搜索结果。如果需要以 JSON 格式获取搜索结果,可以选择 json。
  • -h, --help:显示帮助信息并退出。
  1. piga优点
  • 自动生成依赖项清单:Pigar 可以自动分析项目代码并生成一个包含所有依赖项的 requirements.txt 文件。这减少了手动维护依赖项清单的工作量,并确保清单的准确性。
  • 简单易用:Pigar 的使用非常简单,只需在项目目录中运行命令即可生成依赖项清单。它不需要复杂的配置或额外的参数设置。
  • 快速而轻量:Pigar 的分析过程通常很快,尤其是对于小型项目而言。它是一个轻量级工具,不会引入过多的额外依赖项或复杂的功能。
  • 支持不同的输出格式:Pigar 不仅可以生成 requirements.txt 文件,还支持其他格式,如 pipenv、poetry 和 conda 的依赖项清单格式。这使得 Pigar 更加灵活,适用于不同的项目和依赖项管理工具。
  1. piga缺点
  • 仅基于静态分析:Pigar 是通过静态分析项目代码来确定依赖项的。这意味着它可能无法捕捉到动态导入或运行时依赖项。对于一些复杂的项目,可能需要手动添加一些缺失的依赖项。
  • 依赖项版本控制:Pigar 生成的 requirements.txt 文件默认不包含依赖项的版本信息。这可能导致依赖项的版本冲突或不一致。您可能需要手动编辑生成的清单文件,添加适当的版本约束。
四、pip-tools

pip-tools 是一个用于管理 Python 项目依赖关系的工具。它提供了一组命令行工具,可以帮助创建和维护一个明确的依赖关系文件,以确保项目的依赖关系的一致性和可重现性。

  1. 主要功能和用途
  • 依赖关系管理:pip-tools 允许定义项目的依赖关系,并生成一个明确的依赖关系文件。可以使用简单的文本文件(通常称为 requirements.in)来列出项目的依赖项,包括要求的版本范围。然后,使用 pip-compile 命令将其转换为一个固定的依赖关系文件(通常称为 requirements.txt)。这样可以确保项目的依赖项不会随着时间的推移而意外更改。
  • 版本控制:通过使用 pip-compile 命令生成固定的依赖关系文件,可以明确指定每个依赖项的版本范围。这有助于确保每个依赖项的版本在不同环境中保持一致,从而提高项目的可重现性。可以根据需要更新依赖项的版本,并使用 pip-compile 命令重新生成依赖关系文件。
  • 快速安装:pip-tools 还提供了一个命令行工具 pip-sync,可以根据 requirements.txt 文件一次性安装所有依赖项。这样,可以轻松地在新环境中设置项目的依赖项,而无需逐个安装每个依赖项。
  • 可选的环境隔离:尽管 pip-tools 本身不提供虚拟环境管理功能,但它与其他工具(如 pipenv 或 virtualenv)兼容,并可以与它们一起使用。可以在虚拟环境中安装和管理项目的依赖项,以确保项目与其他环境隔离。
  1. pip-compile,用于生成一个固定的依赖关系文件
  • –version:显示版本信息并退出,如:pip-compile --version
  • -v、–verbose:显示更多的输出,如:pip-compile -v requirements.in
  • -q、–quiet:输出较少的信息,如:pip-compile -q requirements.in
  • -n、–dry-run:只显示将要发生的更改,不做任何实际改变,如:pip-compile -n requirements.in
  • -p、–pre:允许解析预发布版本(默认为禁用)。
  • -r、–rebuild:在开始之前清除任何缓存,从头开始重新构建。
  • –extra TEXT:安装指定的 extras_require 组;可以多次使用。
  • –all-extras:安装所有的 extras_require 组。
  • -f、–find-links TEXT:在指定的目录或 HTML 页面中查找归档文件;可以多次使用。
  • -i、–index-url TEXT:更改索引 URL。
  • –no-index:忽略包索引(仅查看 --find-links 指定的 URL)。
  • –extra-index-url TEXT:添加另一个索引 URL 进行搜索;可以多次使用。
  • –cert TEXT:指定替代的 CA 证书束路径。
  • –client-cert TEXT:指定 SSL 客户端证书路径,一个包含私钥和证书的单个文件(PEM 格式)。
  • –trusted-host TEXT:将此主机标记为受信任,即使它没有有效或任何 HTTPS;可以多次使用。
  • –header / --no-header:在生成的文件中添加头部注释。
  • –emit-trusted-host / --no-emit-trusted-host:在生成的文件中添加受信任主机选项。
  • –annotate / --no-annotate:在结果中添加注释,指示依赖项的来源。
  • –annotation-style [line|split]:选择注释的格式样式。
  • -U、–upgrade / --no-upgrade:尝试将所有依赖项升级到最新版本。
  • -P、–upgrade-package TEXT:指定要升级的特定包;可以多次使用。
  • -o、–output-file FILENAME:输出文件名。如果给出多个输入文件,则此选项是必需的。否则,将从输入文件中派生。
  • –newline [LF|CRLF|native|preserve]:覆盖使用的换行符控制字符。
  • –allow-unsafe / --no-allow-unsafe:允许固定被认为不安全的包:distribute、pip、setuptools。警告:未来版本的 pip-tools 将默认启用此行为。使用 --no-allow-unsafe 保留旧行为。建议现在传递 --allow-unsafe 以适应即将到来的更改。
  • –strip-extras / --no-strip-extras:确保输出文件符合约束条件,避免使用 extras。
  • –generate-hashes:在生成的要求文件中生成 pip 8 风格的哈希值。
  • –reuse-hashes / --no-reuse-hashes:通过重用现有输出文件中的哈希值来提高 --generate-hashes 的速度。
  • –max-rounds INTEGER:解析要求之前的最大循环次数。
  • –build-isolation / --no-build-isolation:在构建现代源分发包时启用隔离。如果禁用构建隔离,则必须已经安装了 PEP 518 指定的构建依赖项。
  • –emit-find-links / --no-emit-find-links:在生成的文件中添加 find-links 选项。
  • –cache-dir DIRECTORY:将缓存数据存储在指定的目录中。
  • –pip-args TEXT:直接传递给 pip 命令的参数。
  • –resolver [legacy|backtracking]:选择依赖项解析器。
  • –emit-index-url / --no-emit-index-url:在生成的文件中添加索引 URL。
  • –emit-options / --no-emit-options:在生成的文件中添加选项。
  • –unsafe-package TEXT:指定要考虑为不安全的包;可以多次使用。替代默认的不安全包:distribute、pip、setuptools。
  • –config FILE:从 TOML 文件中读取配置。默认情况下,按照给定顺序查找以下文件:.pip-tools.toml、pyproject.toml。
  • –no-config:不读取任何配置文件。
  • -c、–constraint FILE:使用给定的约束文件限制版本;可以多次使用。
  • -h、–help:显示帮助信息并退出
  1. pip-sync,用于安装或升级项目的依赖项
  • –version:显示 pip-tools 的版本信息并退出。
  • -a, --ask:显示将要执行的操作,然后询问是否继续。
  • -n, --dry-run:仅显示将要发生的更改,不做任何实际修改。
  • –force:即使存在冲突,也继续进行操作。
  • -f, --find-links TEXT:在指定目录或 HTML 页面中查找存档文件;可以多次使用。
  • -i, --index-url TEXT:更改索引 URL(默认为 PyPI)。
  • –extra-index-url TEXT:添加其他索引 URL 进行搜索;可以多次使用。
  • –trusted-host TEXT:将此主机标记为可信任,即使它没有有效的或任何 HTTPS;可以多次使用。
  • –no-index:忽略软件包索引(仅查看 --find-links 中的 URL)。
  • –python-executable TEXT:如果要针对当前环境以外的环境,则使用自定义的 Python 可执行文件路径。
  • -v, --verbose:显示更多输出。
  • -q, --quiet:提供较少的输出。
  • –user:限制操作范围为用户目录。
  • –cert TEXT:替代 CA 证书束的路径。
  • –client-cert TEXT:SSL 客户端证书的路径,一个包含私钥和 PEM 格式证书的单个文件。
  • –pip-args TEXT:直接传递给 pip install 的参数。
  • –config FILE:从 TOML 文件中读取配置。默认情况下,按照给定的顺序查找以下文件:.pip-tools.toml、pyproject.toml。
  • –no-config:不读取任何配置文件。
  • -h, --help:显示此帮助消息并退出。
  1. pip-tools优点
  • 精确的依赖项控制:pip-tools 允许您为项目的依赖项指定精确的版本约束。通过使用 requirements.in 文件来定义依赖项,然后使用 pip-compile 命令生成具有精确版本约束的 requirements.txt 文件,可以确保项目的依赖项版本一致性和稳定性。
  • 支持多个依赖项文件:pip-tools 支持多个依赖项文件,这使得您可以根据需要组织和管理项目的依赖项。例如,您可以拆分依赖项为基础依赖项和开发依赖项,或者根据不同的环境(如测试环境和生产环境)创建不同的依赖项文件。
  • 快速而灵活:pip-tools 的编译过程通常很快,尤其是对于小型项目而言。它还提供了一些选项来控制生成的 requirements.txt 文件的格式和行为,例如是否包含注释、是否生成 hashes 等。
  • 支持更新和同步依赖项:pip-tools 的 pip-sync 命令可以帮助您将项目的虚拟环境与 requirements.txt 文件中的依赖项保持同步。这样可以确保项目的依赖项与清单文件中指定的版本保持一致,并且可以方便地更新和安装新的依赖项。
  1. pip-tools缺点
  • 学习曲线:对于新用户来说,pip-tools 可能有一定的学习曲线。它的工作流程和命令选项可能需要一些时间来理解和掌握。然而,一旦熟悉了基本概念和操作,pip-tools 可以提供强大的依赖项管理能力。
  • 依赖项冲突解决:pip-tools 生成的 requirements.txt 文件中的精确版本约束可能导致依赖项之间的冲突。如果项目的依赖项之间存在不兼容或冲突的版本要求,您可能需要手动解决这些冲突。
五、pipreqs

pipreqs 是一个用于自动生成 Python 项目依赖项清单(requirements.txt)的工具。当您开发 Python 项目时,项目可能会依赖于其他的 Python 包或库。手动维护依赖项清单可能会很繁琐,而 pipreqs 可以帮助简化这个过程,使用方法:pipreqs [options] [ ]

  1. 主要功能和用途
  • 自动生成依赖项清单:pipreqs 可以自动分析项目的源代码文件,识别 import 语句,并根据这些语句生成一个包含项目所需依赖项的清单文件。
  • 简单易用:只需在项目目录中运行 pipreqs 命令即可生成依赖项清单,无需手动列出每个依赖项。
  • 快速和高效:pipreqs 的分析过程快速且高效,可以在短时间内生成准确的依赖项清单。
  • 支持虚拟环境:pipreqs 可以与 Python 虚拟环境一起使用,以确保生成的依赖项清单与项目的环境相匹配。
  • 支持黑名单和白名单:您可以使用黑名单和白名单机制来排除或包含特定的包或模块,以控制生成的依赖项清单的内容。
  • 支持保存开发环境依赖项:除了项目依赖项,pipreqs 还可以生成包含开发环境依赖项的清单文件,以便在开发过程中使用。
  1. 主要命令配置
  • –use-local:仅使用本地包信息,而不查询 PyPI(Python Package Index)。
  • –pypi-server :使用自定义的 PyPI 服务器。
  • –proxy :使用代理服务器,参数将传递给 requests 库
  • –debug:打印调试信息。
  • –ignore …:忽略额外的目录,多个目录之间用逗号分隔。
  • –no-follow-links:不要跟随项目中的符号链接。
  • –encoding :使用指定的字符编码打开文件。
  • –savepath :将依赖项列表保存到指定的文件中。
  • –print:将依赖项列表输出到标准输出。
  • –force:覆盖现有的 requirements.txt 文件。
  • –diff :将 requirements.txt 中的模块与项目中的导入进行比较。
  • –clean :通过删除在项目中未使用的模块来清理 requirements.txt 文件。
  • –mode :启用动态版本控制,支持 、 或 方案。
  • :例如,Flask~=1.1.2 表示兼容版本,允许 1.1.2 及其后续的修订版本,但不包括 1.2 及更高的主版本。
  • :例如,Flask>=1.1.2 表示大于等于 1.1.2 的版本。
  • :例如,Flask 表示没有指定版本限制。
  1. pipreqs优点
  • 自动生成依赖项清单:pipreqs 可以自动分析项目代码,并根据导入语句生成一个包含所有依赖项的 requirements.txt 文件。这减少了手动维护依赖项清单的工作量,并确保清单的准确性。
  • 简单易用:pipreqs 的使用非常简单,只需在项目目录中运行命令即可生成依赖项清单。它不需要复杂的配置或额外的参数设置。
  • 快速而轻量:pipreqs 的分析过程通常很快,尤其是对于小型项目而言。它是一个轻量级工具,不会引入过多的额外依赖项或复杂的功能。
  • 支持自定义排除和包含:pipreqs 允许您在生成依赖项清单时排除特定的文件或文件夹,以及包含额外的依赖项。这使得您可以更灵活地控制生成的清单内容。
  1. 缺点
  • 仅基于静态分析:pipreqs 是通过静态分析项目代码来确定依赖项的。这意味着它可能无法捕捉到动态导入或运行时依赖项。对于一些复杂的项目,可能需要手动添加一些缺失的依赖项。
  • 依赖项版本控制:pipreqs 生成的 requirements.txt 文件默认不包含依赖项的版本信息。这可能导致依赖项的版本冲突或不一致。您可能需要手动编辑生成的清单文件,添加适当的版本约束。
  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值