6

У большинства инструментов, которые я использую, есть какой-то режим (часто включенный по умолчанию), когда они задают мне ноль вопросов при выполнении команды. apt-get - пример, близкий к pip. Есть опция -y, которая делает его неинтерактивным. Есть ли такая опция для pip? Если такой опции нет, как обернуть ее в какой-нибудь скрипт, который даст то, что я хочу. Например, я хотел бы запустить что-то вроде:

pipyes install mypackage

В настоящее время я делаю это, но хотел бы обернуть это в скрипт:

yes | pip install mypackage

Это "правильный" способ достижения пипа неинтерактивного режима.

3 ответа3

11

Существует опция --yes специально для команды удаления. призвание

pip uninstall --yes <some-package>

удаляет пакет без запроса подтверждения.

Для установки, пайпинг в команде yes все еще кажется подходящим.

Другой подход, который может оказаться излишним в зависимости от вашего варианта использования, - это использование специального инструмента. Это, безусловно, правильный путь, если вы регулярно боретесь с автоматической установкой и настройкой. Как пример: государственная система SaltStacks имеет множество способов автоматизировать взаимодействие с pip. Это не только для оркестровки серверных ферм, но также может использоваться локально, напрямую запуская salt-call. Смотрите введение о беге соли без хозяина.

0

Даже если это не задокументировано, с последними версиями setuptools вы можете сделать

pip install --noinput ...

... это будет зависать вместо того, чтобы висеть на подсказке.

0

Я далёк от эксперта по python/pip, но я использовал его в различных целях в течение нескольких лет, и мне еще не приходилось сталкиваться с прямым использованием интерактивной установки pip. Он имеет широкие возможности для менее простого случая (альтернативные индексы пакетов, кэширование, режим разработки и т.д.). Если у вас есть конкретный вариант установки, требующий некоторого взаимодействия, я думаю, вы можете автоматизировать его, предоставив правильную комбинацию специализированных параметров, описанных здесь.

Деинсталляция - это тот случай, когда я гораздо больше привык к требованию взаимодействия (включая явное подтверждение удаления модулей), и на самом деле он поддерживает стандартный флаг --yes, на который вы ссылаетесь в вопросе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .