setup.py中extras_require的依赖关系链接

时间:2016-12-07 20:18:53

标签: python pip setuptools setup.py

  1. 有没有办法在安装附加软件包时自动处理依赖关系链接,而不必像--process-dependency-links那样调用install_requires

    pip install -e .[extra] --process-dependency-links
    

    我需要这个,因为依赖项只位于私人git仓库。

  2. 是否可以使用python setup.py install安装附加内容?

  3. {@ 1}}是否仍被视为已弃用?我不确定这里的状态。

2 个答案:

答案 0 :(得分:2)

我搜索的时间太长了,以至于无法找到setup.cfg的方法,因此希望这对其他人有帮助,如果他们不想使用OP未指定的setup.py的话。我还为install_requires提供了一个自定义URL,这也需要花费一些时间。

#setup.cfg (only showing relevant parts)
[options]
install_requires =
    pyyaml @ git+https://github.com/yaml/pyyaml.git@master
    
[options.extras_require]
jsonschema = jsonschema @ git+https://github.com/Julian/jsonschema.git@v3.2.0
six = six
  1. pip install -e .[jsonschema]将为您提供带有自定义URL的附加功能,或者pip install -e .[jsonschema,six]将为您提供两个附加功能(请注意,.后或逗号中的逗号周围没有空格。附加功能列表)。
  2. 据我所知,您无法使用python setup.py install安装其他功能。
  3. 是的,尽管抱怨很多,--process-dependency-links仍然被弃用,但是只要知道语法,上面的内容就足够了。

答案 1 :(得分:1)

  1. 是的,如果您使用--process-dependency-links,则不再需要extras_require

已通过pip版本19.3.1测试

示例:

$ pip install -e .[graphs]

# setup.py  

from setuptools import setup
setup(
    name='myservice',
    version='0.1.0',
    install_requires=[
        'requests',
    ],
    extras_require={
        'graphs': [
            'graphcommons @ git+ssh://git@github.com/graphcommons/graphcommons-python@master',
        ],
    },
)

通过使用ssh协议(而不是https)访问git repo,您​​可以从私有存储库进行安装。

  1. 不确定python setup.py install,但pip install .[extras]应该足够好吗?

  2. 是的,在pip版本19中。