Given this fairly minimal setup.py (greenlet and gevent are just placeholders for arbitrary dependencies)
from setuptools import find_namespace_packages, setup setup( name='foo', version='0.0.1', platforms='any', packages=find_namespace_packages(), install_requires=['greenlet'], extras_require={ 'bar': ['gevent'] }, entry_points={ 'console_scripts': [ 'foo-script = foo.script:main', 'bar-script = foo.bar:main [bar]' ] } )
with foo/script.py
containing this
def main(): try: import greenlet except: print('Dependency missing.') else: print('Found dependency.')
and foo/bar.py
containing this
def main(): try: import gevent except: print('Dependency missing.') else: print('Found dependency.')
I would assume that, when I run pip install .
, it would just install foo-script
and only install bar-script
if I did pip install .[bar]
.
However, I find that bar-script
is installed in any case, expectedly telling me "Dependency missing" in the first case. According to the documentation on entry points, I would have assumed that this would not be the case, so I am wondering if this is the intended behavior. If it is, I am not sure I understand the point of being able to specify dependencies for individual entry points in the first place, if not even core ecosystem tooling like pip
seems to honor them.
没有评论:
发表评论