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