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

Y0d*_*0da 5 python pip setuptools setup.py

  1. 安装带有其他功能的软件包时,是否有一种方法可以自动处理依赖关系链接,而无需--process-dependency-links像通常那样调用install_requires

    pip install -e .[extra] --process-dependency-links
    
    Run Code Online (Sandbox Code Playgroud)

    我需要这个,因为依赖项仅位于私有git repo上。

  2. 是否可以使用安装其他功能python setup.py install

  3. 是否--process-dependency-links已弃用仍要考虑?我不确定这里的状态。

小智 6

我搜索了太久才弄清楚如何使用 setup.cfg 来做到这一点,所以希望这会帮助其他人,如果他们不想使用 setup.py 因为OP没有指定。我还为 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
Run Code Online (Sandbox Code Playgroud)
  1. pip install -e .[jsonschema]将为您提供带有自定义 URL 的额外内容,或者pip install -e .[jsonschema,six]为您提供两个额外内容(请注意,额外内容列表中逗号后面或周围没有空格.)。
  2. 据我所知,您无法使用python setup.py install.
  3. --process-dependency-links尽管有很多抱怨,但Yes仍然被弃用,但是一旦您了解语法,上面的内容就足够好了。


chi*_*aku 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',
        ],
    },
)

Run Code Online (Sandbox Code Playgroud)

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

  1. 不确定python setup.py installpip install .[extras]应该足够好?

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