setup.py игнорирует зависимости полного пути, вместо этого ищет наилучшее совпадение в pypi

Аналогично https://stackoverflow.com/questions/12518499/pip -ignores-dependency-links-in-setup-py

Я изменяю faker в ожидании открытого PR, который я открыл с помощью валидаторы, и я хочу протестировать новую зависимость, которая у меня будет.

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"

ОБНОВЛЕНИЕ. Поскольку это исправлено, проблема больше не повторяется — все тесты будут пройдены


person Javier Buzzi    schedule 08.05.2019    source источник


Ответы (1)


К сожалению, ни setup_requires, ни tests_require пока не поддерживают поиск по URL-адресу или маркеры среды из PEP 508. Вам нужно использовать dependency_links, например

setup(
    ...
    tests_require=["validators>=0.13.0"],
    dependency_links=['git+https://github.com/kingbuzzman/validators@master#egg=validators-0.13.0'],
)
person hoefling    schedule 08.05.2019
comment
Рад, что смог помочь! - person hoefling; 09.05.2019