С середины 2022 года теперь можно избавиться от setup.py
, setup.cfg
в пользу pyproject.toml
. Редактируемые установки работают с последними версиями setuptools и pip, и даже официальное руководство по упаковке переключилось с setup.py
на pyproject.toml
.
Однако документация по requirements.txt
, похоже, тоже была удалена, и интересно, куда теперь поместить закрепленные требования?
В качестве напоминания: раньше было обычной практикой помещать зависимости (без закрепления версии) в setup.py
, чтобы избежать проблем, когда этот пакет устанавливается с другими пакетами, которым требуются те же зависимости, но с конфликтующими требованиями к версии. Для упаковки библиотек обычно достаточно setup.py
.
Для развертываний (т.е. не библиотек) вы обычно также предоставляли requirements.txt
с привязанными к версии зависимостями. Таким образом, вы не получаете случайно самые последние и самые лучшие, а точные версии зависимостей, с которыми был протестирован этот пакет.
Так вот у меня вопрос, изменилось ли что-нибудь? Вы по-прежнему ставите закрепленные требования в requirements.txt
при использовании вместе с pyproject.toml
? Или есть лишний раздел
за это в pyproject.toml
? Есть ли где-нибудь документация по этому поводу?
Я не думаю, что setup.cfg больше нужен. Возможно, какие-то сторонние пакеты по-прежнему настаивают на размещении своей конфигурации там, но что касается упаковки, все вещи из setup.cfg можно переместить в pyproject.toml.
Я смутно помню, как в начале этого года пытался что-то переместить из setup.cfg
в pyproejct.toml
, но setuptools
не узнал и не нашел. Я согласен с тем, что целью является перемещение вещей, но я думал, что это все еще незавершенная работа.
Это документация pip для pyproject.toml
... Этот файл содержит системные требования и информацию для сборки, которые используются pip для сборки пакета.
Так что это не то место. Глядя на боковую панель, мы видим запись Формат файла требований, которая является «старым» requirements.txt
файлом.
Предлагаю перейти на поэзию, это намного лучше стандартного pip
для управления зависимостями. А поскольку он использует pyproject.toml
, ваши зависимости и конфиги находятся в одном месте, так что всем проще управлять 🙂
Цитирую себя из здесь
Мое текущее предположение таково: [...] вы помещаете свои (в основном незакрепленные) зависимости в pyproject.toml вместо setup.py, поэтому вашу библиотеку можно установить как зависимость от чего-то еще, не вызывая особых проблем из-за проблем, разрешающих ограничения версии .
Вдобавок ко всему, для «развертываемых приложений» (из-за отсутствия лучшего термина) вы все равно хотите поддерживать отдельный файл requirements.txt с точной привязкой версии.
Это было подтверждено членом Управления по упаковке Python (PyPA), и пояснения к рекомендациям PyPA должны быть соответствующим образом обновлены в какой-то момент.
Насколько я понимаю, информация, которая раньше входила в
setup.py
, теперь разделена междуpyproject.toml
иsetup.cfg
.