Как узнать, какие версии зависимостей поддерживает мое приложение? - PullRequest
6 голосов
/ 03 августа 2020

Поэтому при разработке приложения считается хорошей практикой указывать минимальные (наименее ограничительные) необходимые версии зависимостей в setup.py, install_requires. Ну, а как мне узнать, от каких версий моих зависимостей на самом деле зависит мой проект?

Есть ли способ автоматически определить это? Если нет, может быть, есть хороший способ проверить верхнюю и нижнюю границы указанных мной диапазонов зависимостей?

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

Ответы [ 2 ]

1 голос
/ 03 августа 2020

«Правильный» способ - просто отслеживать, какие функции вы используете в каждой зависимости, а затем минимальные версии для каждой будут минимальной версией, которая имеет эти функции или имеет какое-либо важное обновление (безопасность, скорость, et c).

Способ «Если работает, то работает» - это написать скрипт, который перебирает версии для каждой отдельной зависимости, чтобы получить диапазон для каждой, установив его и проверив, работает. Вероятно, вы могли бы легко сделать это с помощью действий github (хотя вам придется заплатить, если ваше репо является частным)

1 голос
/ 03 августа 2020

Вам не нужно указывать минимальные версии, но вы должны сосредоточиться на более эффективных зависимостях. Всегда помните об этом.

Если minimal означает количество зависимостей, вы можете использовать такой пакет, как pipdeptree, который показывает дерево зависимостей установленных библиотек в вашей среде. Вы можете просто указать библиотеки верхнего уровня в своих требованиях, и другие зависимости будут установлены вместе с этими верхними библиотеками.

Когда вы установите эту библиотеку и просто наберете pipdeptree, вы увидите результат, аналогичный приведенному ниже:

python-gitlab==1.8.0
  - requests [required: >=2.4.2, installed: 2.22.0]
    - certifi [required: >=2017.4.17, installed: 2019.6.16]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.9, installed: 2.8]
    - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.3]
  - six [required: Any, installed: 1.11.0]
python-jenkins==1.7.0
  - multi-key-dict [required: Any, installed: 2.0.3]
  - pbr [required: >=0.8.2, installed: 1.10.0]
  - requests [required: Any, installed: 2.22.0]
    - certifi [required: >=2017.4.17, installed: 2019.6.16]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.9, installed: 2.8]
    - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.3]
  - six [required: >=1.3.0, installed: 1.11.0]

Итак, ваши требования могут быть примерно такими:

python-gitlab==1.8.0
python-jenkins==1.7.0

Если вы хотели указать минимально возможные версии, я не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...