即使不存在所需的额外内容,Pip 也会安装 console_scripts 入口点

问题描述

鉴于这个相当小的 setup.py(greenlet 和 gevent 只是任意依赖项的占位符)

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]'
        ]
    }
)

foo/script.py 包含此内容

def main():
    try:
        import greenlet
    except:
        print('Dependency missing.')
    else:
        print('Found dependency.')

和包含此内容foo/bar.py

def main():
    try:
        import gevent
    except:
        print('Dependency missing.')
    else:
        print('Found dependency.')

我会假设,当我运行 pip install . 时,它只会安装 foo-script,如果我做了 bar-script,它只会安装 pip install .[bar]

但是,我发现在任何情况下都安装了 bar-script,预计在第一种情况下会告诉我“缺少依赖项”。 根据 documentation on entry points,我会假设情况并非如此,所以我想知道这是否是预期的行为。 如果是这样,我不确定我是否理解能够首先为各个入口点指定依赖项的意义,即使像 pip 这样的核心生态系统工具似乎也不尊重它们。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)