setup.py忽略完整路径依赖性,而是在pypi中查找“最佳匹配”

时间:2019-05-08 17:28:47

标签: python pip setuptools setup.py

类似于https://stackoverflow.com/questions/12518499/pip-ignores-dependency-links-in-setup-py

我正准备faker修改开放的PR,而我正在修改validators,并且我希望能够测试我将拥有的新依赖关系。

setup(
    name='Faker',
    ...
    install_requires=[
        "python-dateutil>=2.4",
        "six>=1.10",
        "text-unidecode==1.2",
    ],
    tests_require=[
        "validators@https://github.com/kingbuzzman/validators/archive/0.13.0.tar.gz#egg=validators-0.13.0",  # TODO: this will change  # noqa
        "ukpostcodeparser>=1.1.1",
        ...
    ],
    ...
)

python setup.py test拒绝安装0.13.0版本。

如果我将故障线移至install_requires=[..](不应出现)

setup(
    name='Faker',
    ...
    install_requires=[
        "python-dateutil>=2.4",
        "six>=1.10",
        "text-unidecode==1.2",
         "validators@https://github.com/kingbuzzman/validators/archive/0.13.0.tar.gz#egg=validators-0.13.0",  # TODO: this will change  # noqa
    ],
    tests_require=[
        "ukpostcodeparser>=1.1.1",
        ...
    ],
    ...
)
  • 使用pip install -e .一切正常-安装正确的版本。
  • 使用同一问题python setup.py develop

我的猜测是setuptools / distutils做一些奇怪的事情-pip似乎解决了这个问题。我的问题:该如何解决?

问题代码和参考可以在这里找到:

查看当前问题的最简单方法:

docker run -it --rm python:3.7 bash -c "git clone https://github.com/kingbuzzman/faker.git; cd faker; pip install -e .; python setup.py test"

更新:由于此问题已得到解决,因此该问题将不再重复出现-所有测试都会通过

1 个答案:

答案 0 :(得分:1)

很遗憾,setup_requirestests_require都还不支持PEP 508中基于URL的查找或环境标记。例如,您需要使用dependency_links

setup(
    ...
    tests_require=["validators>=0.13.0"],
    dependency_links=['git+https://github.com/kingbuzzman/validators@master#egg=validators-0.13.0'],
)