Mik*_*per 27 python distutils pip
在安装我的python包时,我希望能够告诉用户各种可选的依赖项.理想情况下,我还想打印一条关于这些可选要求的信息以及它们各自的要求.
在pip或docutils的文档中我还没有看到任何东西.这些工具是否支持可选的依赖项?
Tob*_*obu 23
这些被称为额外,这是如何在您的setup.py中使用它们.
基本支持位于pkg_resources中.您需要启用分发setup.py
.pip也会理解他们:
pip install 'package[extras]'
Run Code Online (Sandbox Code Playgroud)
Jak*_*aas 13
自 PEP-621 起,此信息最好放置在 pyproject.toml 中,而不是 setup.py 中。这是PEP 621的相关规范。以下是 pyproject.toml 中的示例片段(感谢@GwynBleidD):
[project.optional-dependencies]
test = [
"pytest < 5.0.0",
"pytest-cov[all]"
]
lint = [
"black",
"flake8"
]
ci = [
"pytest < 5.0.0",
"pytest-cov[all]",
"black",
"flake8"
]
Run Code Online (Sandbox Code Playgroud)
更完整的示例可以在 PEP 中找到
是的,由@Tobu 声明并在此处解释。在您的setup.py
文件中,您可以添加如下一行:
extras_require = {
'full': ['matplotlib', 'tensorflow', 'numpy', 'tikzplotlib']
}
Run Code Online (Sandbox Code Playgroud)
我这里有这行的一个例子。
现在,您可以通过 PIP basic/vanilla 包pip install package_name
或具有所有可选依赖项的包进行安装,例如pip install package_name[full]
package_name
您的包的名称在哪里,full
因为我们在extras_require
字典中添加了“完整”,但这取决于您输入的名称。
如果有人对如何编写一个可以使用或不使用包的库感兴趣,我推荐这个答案