问题描述
鉴于这个相当小的 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 (将#修改为@)