微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决即使不存在所需的额外内容,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 举报,一经查实,本站将立刻删除。