setup.py игнорирует зависимости полного пути, вместо этого ищет «лучшее соответствие» в Pypi - PullRequest
5 голосов
/ 08 мая 2019

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

Я изменяю фейкер в ожидании открытого 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"

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

1 Ответ

1 голос
/ 09 мая 2019

К сожалению, ни 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'],
)
...