是否有可能在setup.py中定义条件entry_points?我注意到有可能标签使用extras
的入口点,但即使没有该额外功能安装该包,该入口点也可用。有条件的setuptools entry_points
setup(name='my.package',
...
extras_require={
'special': [
'dependency1',
'dependency2',
],
},
...
entry_points="""
[custom_entrypoint]
handlername = my.package.special:feature [special]
""",
)
似乎为custom_entrypoint
即使包而没有special
特征(pip install my.package[special]
)安装是可用的。有没有一种简单的方法来获得像这样的工作?
我结束了类似的事情。我没有将功能转移到新的软件包中,而是将它保留在相同的位置。我不想将几个软件包的功能移到新的特殊软件包中,因为我将它用作“实验性”功能切换。相反,我创建了一个名为'app.experimental'的特殊包,并将其作为extras_require包含在其他包中。在执行iter_entry_points循环时,我检查入口点是否满足了他们的要求,如果不是它被忽略('entrypoint.require()'将会引发'pkg_resources.DistributionNotFound')。 – Torkel
@Torkel然后请发布您的解决方案作为替代答案,并[接受它](D) –
创建整个Python包以适应“元依赖”的需要是愚蠢的,这正是'extras_require'的意思。 – amcgregor