动态依赖如何在python setup.py中工作?

时间:2018-03-15 11:44:34

标签: python dependencies setuptools setup.py

我的包有一些可选的安装

# for extra 'cmd'
cmd_line_requirements = [
    'Click>=6.0'
]

setup函数定义了这样的额外内容:

extras_require={
    'cmd': cmd_line_requirements,
},

并且entry_points定义如下:

entry_points={
    'console_scripts': [
        'threedigrid=threedigrid.cli:main [cmd]',
    ],
},

当我用pip安装包时

pip install --editable .

未安装Click,但我的threedigrid.egg.info中的entry_points.txt包含以下内容:

[console_scripts]
threedigrid = threedigrid.cli:main [cmd]

我对此感到有点困惑,因为我认为只有在指定了[cmd]选项的情况下安装软件包时才会生成控制台脚本。 which threedigrid产生

/home/<>/.virtualenvs/grid_test/bin/threedigrid

我是否误解了动态依赖关系的工作原理?

1 个答案:

答案 0 :(得分:1)

始终会创建入口点,但尝试在没有threedigrid的情况下运行脚本[cmd]会导致pkg_resources.DistributionNotFound例外:

  

点击&#39;未找到分发并且是应用程序要求