Обновление поэзии 1.2.0 Ошибка tox.ini Недопустимая версия PEP440: «3.8.13»

У меня есть обновление поэзии в моем github ci в моем tox.ini. У моего ки проблема. Я использую зуул. Когда я использую поэзиюpip install -v poetry==1.1.15. У меня нет проблем, но когда я использую1.2.0У меня есть эта ошибка:

      Invalid PEP 440 version: '3.8.13+'

3.8.13это моя версия Python.

Я не понимаю, почему у меня проблема с версией Python, а не с предыдущей версией.

pyproject.toml

      [tool.poetry]
name = zeus
version = "0.1.0"
description = ***
authors = ***

[tool.poetry.dependencies]
python = "3.8.*"
pandas = "1.4.*"
click = "8.1.*"



[tool.poetry.dev-dependencies]
black = "22.6.*"
flake8 = "5.0.*"
freezegun = "1.2.*"
pre-commit = "2.20.*"
pycodestyle = "2.9.*"
pytest = "7.*"
pylint = "2.14.*"
tox = "3.25.*"
yamllint = "1.27.*"


[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

tox.ini

      [testenv]
whitelist_externals =
    bash
    poetry

basepython = python3.8

commands_pre =
    bash -c "pip install --upgrade pip"
    bash -c "pip install -q poetry"

    poetry config repositories****
    poetry config http-basic.artifactory ****

    poetry install

[testenv:lint]
description = Run the quality checks
commands =
    poetry run pre-commit run --from-ref origin/master --to-ref HEAD

[testenv:test]
setenv =
    PYTHONPATH = {toxinidir}/app
description = Run the tests
commands =
    poetry run pytest

1 ответ

В вашей настройке предпринято несколько неортодоксальных действий:

  1. Внешние элементы белого списка обозначают поэзию, а затем в commands_pre вы устанавливаете поэзию в виртуальную среду tox. Вам нужно только одно или другое. Но скорее я бы рекомендовал подход, описанный здесь . Вариант использования 1 наиболее близок к тому, с чем сталкиваются пользователи во время установки вашего пакета.
  2. Вы используете выделенную тестовую среду ([testenv:test]). Нет необходимости, вы можете просто использовать значение по умолчанию[testenv]раздел. Затем вы можете запустить свой testsuite tox -e py38 для python3.8 или любого другого поддерживаемого тега (py37,py39, ... источник). Это также делаетbasepythonключ избыточен. И для гораздо более разностороннего опыта сtox.
  3. ПараметрPYTHONPATH = {toxinidir}/appдля меня это запах кода. Если вы настроили свойpyproject.tomlправильно, тогда поэзия должна знать, где живет ваш код (и соответственно установить его). Не нужно было бы устанавливатьPYTHONPATH. Следовательно, вам, вероятно, нужно добавить такой раздел, как:
      [tool.poetry]
name = "zeus"
packages = [
    { include = "zeus", from = "app" },
]

Примечание: что/srcпапка встречается гораздо чаще, чем/appпапка. Что, вероятно, является основной причиной того, что вы не нашли эту опцию. Смотрите этот ответ .

Я подозреваю, что если вы решите все эти вопросы, ваш код и его установка будут работать совершенно по-другому, возможно, решив вашу проблему.

Другие вопросы по тегам