Pip установить и удалить рекурсивно в неинтерактивном режиме

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

pip3 uninstall --yes -r host-requirements.txt
pip3 install --no-input -r host-requirements.txt

Мне не удалось найти параметры --yes и --no-input в справочном документе pip, и я не уверен, что они официально поддерживаются.

Это верно. Они поддерживаются --no-input здесь github.com/pypa/pip/blob/master/src/pip/_internal/cli/… и --yes здесь github.com/pypa/pip/blob/master/src/pip/_internal/commands/…

pawelbylina 30.05.2019 19:43

Мне интересно, почему этого нет в официальном документе. Означает ли это, что они могут прекратить поддержку без предварительного уведомления?

Arian 30.05.2019 19:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
12
2
13 554
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Для удаления вы можете использовать флаг --yes или -y, как описано здесь: https://pip.pypa.io/en/stable/reference/pip_uninstall/?highlight=--yes.

Для установки вы можете передать yes | pip install -r requirements.txt как описано здесь: тихая установка python pip

Надеюсь это поможет.

видимо yes не работает для некоторых сценариев, как указано в комментарии к сообщению, на которое вы дали ссылку.

Arian 30.05.2019 19:45

Правильно, но yes должен работать для установки pip. Это не сработает, когда, как в примере, вы хотите подтвердить подлинность сервера.

Anurag Saxena 30.05.2019 19:46

Проверка подлинности сервера — это то, что мы контролируем? возможно ли, что простой pip install -r попадает в такую ​​ситуацию?

Arian 30.05.2019 19:48

Он не попадет в эту ситуацию, если в средней атаке нет человека, и вы не используете https, что вы и делаете. Когда вы запускаете установку pip, pip автоматически переходит к индексу пакета python (pypi.org) и захватывает пакет, ЕСЛИ вы не укажете другой индекс. Маловероятно, ИМО, что вы указываете индекс.

Anurag Saxena 30.05.2019 19:53

Есть больше интерактивных вопросов, которые предполагают другие ответы, чем «да». Например:

Directory /opt/services/spam/egg already exists, and is not a git clone.
What to do?  (i)gnore, (w)ipe, (b)ackup`

В таком сценарии я обнаружил, что звонка echo "i" | pip install ... было достаточно.

Есть --exists-action вариант.

sinoroc 19.03.2020 12:09

Распространенная проблема при установке заключается в том, что необходимо разрешить зависимость от частного репозитория и изначально добавить ключ удаленного сервера.

Obtaining file://...
Collecting your_private_package@ git+ssh://...
  Cloning ssh://****@.../
  Running command git clone -q 'ssh://****@.../
The authenticity of host can't be established.
RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)?

Для этого для ssh StrictHostKeyChecking будет временно установлено значение no. Это можно сделать на уровне хоста или пользователя с меньшим риском для безопасности.

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