在setup.py中是否可以定义有条件的entry_points?我注意到可以使用extras
标记来标记一个entry point,但即使没有安装该额外功能,该entry point也将可用。
setup(name='my.package',
...
extras_require={
'special': [
'dependency1',
'dependency2',
],
},
...
entry_points="""
[custom_entrypoint]
handlername = my.package.special:feature [special]
""",
)
看起来即使没有安装 special
功能(pip install my.package[special]
),custom_entrypoint
也是可用的。有没有简单的方法可以让类似这样的功能正常工作?
实验性
功能切换。相反,我创建了一个名为app.experimental
的特殊包,并将其作为其他包中的extras_require
包含进去。在进行iter_entry_points
循环时,我检查 entrypoint 是否已满足其要求,如果没有,则忽略它(entrypoint.require()
会触发pkg_resources.DistributionNotFound
错误)。 - Torkelextras_require
的用途。 - amcgregor