作为pypdf维护者,如何在pyproject.toml指定需安装任一加密包?
配置pyproject.toml支持二选一加密依赖
你需要调整可选依赖配置,让Python 3.7+版本用户能任选cryptography或PyCryptodome,同时保留Python 3.6仅支持PyCryptodome的规则。以下是两种可行方案:
方案一:单可选依赖组(自动安装所有加密包)
这种配置下,用户执行pip install pypdf[crypto]会同时安装两个兼容的加密包,虽然冗余但不影响功能:
[project.optional-dependencies] crypto = [ "cryptography; python_version >= '3.7'", "PyCryptodome; python_version >= '3.6'" ]
方案二:拆分两个可选依赖组(用户自主选择)
如果想让用户精准选择单个加密包,可拆分出两个独立的可选依赖组:
[project.optional-dependencies] crypto-cryptography = [ "cryptography; python_version >= '3.7'" ] crypto-pycryptodome = [ "PyCryptodome; python_version >= '3.6'" ]
用户可根据需求选择安装:
pip install pypdf[crypto-cryptography](仅安装cryptography)pip install pypdf[crypto-pycryptodome](仅安装PyCryptodome)
两种方案各有优劣:
- 方案一操作简单,适合不想纠结的用户
- 方案二更轻量化,适合对依赖体积有要求的场景
内容的提问来源于stack exchange,提问作者Martin Thoma
相关产品推荐
相关产品推荐

