2016-12-23 4 views
2

Я недавно узнал, что pip does not resolve transitive dependencies в любой здравомыслящей манере. Это означает, что после установки пакета некоторые зависимости зависимостей зависимостей могут не выполняться.Определить проблемы транзитивной зависимости Python во время установки?

Есть ли способ программно проверить, действительно ли все установленные установки зависят от установки после установки?

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


Edit: Вот пример, чтобы лучше проиллюстрировать эту проблему. Предположим, что пакет A зависит от пакетов B и C, оба из которых зависят от упаковки D, возможно, с различными диапазонами версий. При установке A, pip будет произвольно выбирать один из указанных диапазонов версий для D для удовлетворения. Например, может быть удовлетворена зависимость B от D, но необязательная версия C для D может не удовлетвориться. Я хочу определить, существуют ли такие проблемы.

+0

Да, используйте файл требований и укажите номера версий. –

+0

@BurhanKhalid Пожалуйста, ознакомьтесь с приведенным выше вопросом. Я прошу предоставить способ «Определить проблемы транзитивной зависимости Python во время установки». Я не прошу о том, чтобы избежать проблем с транзитивной зависимостью, особенно не путем ручного разрешения зависимостей. – augurar

ответ

0

This answer показывает, как получить все локально установленные пакеты. This one показывает способ проверки установленного пакета, который также рекурсивно проверяет зависимости пакета. Комбинируя эти:

import pip 
import pkg_resources 

pkg_resources.require(str(dep.as_requirement()) 
         for dep in pip.get_installed_distributions()) 

Это поднимет ResolutionError, если какой-либо из установленных пакетов имеет неудовлетворенное требование.


Помимо: Это, кажется, что новая команда pip check предназначена сделать, но это не улавливает некоторые проблемы с зависимостями, что ловит выше сценарий, такие как extras-related issues.

Смежные вопросы