2010-09-08 2 views
24

Как указать дополнительные зависимости в файле требований к приложению? Согласно pip documentation это возможно, но документация не объясняет, как это сделать, и я не могу найти примеров в Интернете.Необязательные зависимости в файле требований к приложению

+0

Great Q. - связанный q. как определить набор требований, которые следует попытаться установить, но не рассматривать установку сбоя, если они не могут быть установлены. У меня есть пакет, который работает лучше, если numpy установлен, но имеет резервную ошибку, если numpy не может скомпилироваться по какой-либо причине. Я хотел бы сделать это установленным по умолчанию, но необязательным, если это не удалось. –

ответ

26

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

Чтобы экспортировать пакеты текущей среды в в текстовый файл, вы можете сделать это:

pip freeze > requirements.txt 

При необходимости, изменять содержимое requirements.txt для точного представления зависимостей вашего проекта. Затем, чтобы установить все пакеты в этом файле, запустите:

pip install -U -r requirements.txt 

-U говорит pip для обновления пакетов до последней версии, и -r рассказывает установить все пакеты в requirements.txt.

+1

Я думаю, вы неправильно поняли вопрос. «pip freeze» просто распечатает все зависимости. Я хочу знать, как я могу указать, какие зависимости требуются и которые являются необязательными в файле требований к протоколам. – del

+0

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

+0

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

2

Вы недопонимаете документы; они не так ясны, как могли бы быть. Точка в документах заключается в том, что с файлом требований вы можете свободно указывать полный рекомендуемый рабочий набор пакетов, включая как необходимые зависимости, так и необязательные. Вы можете добавлять комментарии (строки, начинающиеся с #), чтобы отличить их от людей, но пип не делает различий. Вы можете также иметь два файла требований, как предлагает Даниэль.

+5

На самом деле вы не можете включать как обязательные, так и необязательные зависимости в файл требований, потому что «pip install» немедленно прекратит работу, если какой-либо из пакетов в файле не будет установлен. Кажется, что использование двух отдельных файлов требований - единственное правильное решение. – del

4

В 2015 PEP-0508 определен способ указать дополнительные зависимости в requirements.txt:

requests[security] 

Это означает, что yourpackage потребности requests для его варианта безопасности. Вы можете установить его как:

pip install yourpackage[security] 
+0

Вы можете настроить один из этих «дополнительных» с помощью аргумента ['extras_require'] (http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their -own -зависимостей) для функции 'setup' в' setuptools'. Вы можете увидеть в [запросах setup.py] (https://github.com/requests/requests/blob/3c1d36b827417fdeaf5a1c106129de30dac371d7/setup.py#L98), как настроено «security» «extra». –