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