Требования к пакету Python: использование спецификаторов версий == и>=

Я ищу лучшие практики, что можно и нельзя делать относительно спецификаций версий в файлах требований для pip в пакетах python.

Предположим, что пакет Python зависит от некоторых других модулей. Для большинства из них требуется минимальная версия. По крайней мере, для сопровождающих известно, что код работает с наименьшим количеством, например, шесть 1.7

Теперь можно определить требование по-разному:

  • six>=1.7.0 Программное обеспечение было протестировано с этой версией, и предполагается, что оно будет также с будущими версиями
  • six==1.7.0 Нам нужна точная версия, пакет был протестирован с. Программное обеспечение не было протестировано со всеми будущими версиями модуля, поэтому мы не можем гарантировать, что оно будет работать для них.
  • six==1.9.0 Мы просто тестируем его с самой последней версией и требуем его.

У меня есть запрет требовать точную версию, так как это может нарушить требования других пакетов и кажется плохой практикой для меня. С другой стороны, пакет не был протестирован со всеми версиями шести выше 1.7.0.

Существуют ли какие-либо рекомендации относительно требований к версии пакета и использования == против >=?

1 ответ

Основываясь на моем опыте в качестве разработчика, упаковщика (сопровождающего пакета для дистрибутивов) и сопровождающего программного обеспечения, я пришел к следующей интерпретации / рекомендациям:

  • install_requires: зависимости, перечисленные в install_requires, проверяются во время выполнения (!) pkg_resources. Это жесткие зависимости. Они могут (должны?) Содержать требуемый минимальный номер версии, но не точную версию, если не указаны веские причины. Больше поддерживаемых версий, как правило, более полезно, максимальные номера версий, как правило, кошмар.
  • extras_requires перечисляет необязательные требования (рекомендации), которые не нужны для основной функциональности, но для некоторых дополнительных или являются необязательными, расширяя функциональность. Если программное обеспечение не работает должным образом, оно должно перейти к install_requires.
  • needs.txt Некоторые сопровождающие устанавливают то же самое с помощью install_requires, другие не используют его вообще. Его можно использовать для рекомендации конкретных версий требований, которые лучше всего тестируются. Это, конечно, совсем не полезно для упаковки, но для установок в virtualen vs и подобных.

Упаковщики, как правило, используют информацию не из файла needs.txt, а из файлов install_requires и extras_requires.

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