Обновление пакета без обновления зависимостей с помощью pip?

Я использую pip и virtualenv для моего приложения python. Я хотел бы перейти на новую версию приложения, не касаясь зависимостей. Когда я использую pip install -U, он пытается обновить все пакеты и даже удаляет и переустанавливает ту же версию пакета зависимостей, когда нет новой версии.

Я также пробовал pip install -U --no-deps, но это похоже на обычную установку вместо обновления. Есть ли комбинация флагов, которые будут делать то, что я хочу?

Ответ 1

Я только что пробовал свой проект virtualenv, и pip install -U --no-deps mypackage, похоже, работает нормально. Это просто скачать mypackage и ничего больше. Что вы настроили?

Ответ 2

UPDATE (благодаря комментарию @Jether): если вы используете последнюю версию протокола, то обновление зависимостей только тогда, когда это необходимо, теперь является поведением по умолчанию, и вам не нужно делать что-нибудь особенное! В приведенном ниже ответе описаны шаги для более старых версий pip (которые также работают для более новых версий, если вы хотите быть переносимыми).

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

pip install -U --no-deps mypackage

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

pip install --upgrade --upgrade-strategy only-if-needed mypackage

Это только обновляет требования, если пакет требует более новой версии, чем установлен.

Ответ 3

Ты прав. Я думал, что когда я добавил --no-deps, он забыл удалить существующую версию. Но я попробовал еще раз и не вижу проблем:

$ pip install -U --no-deps myproj
Downloading/unpacking myproj
  Downloading myproj-1.0-trunk.31072.tar.gz (43Kb): 43Kb downloaded
  Running setup.py egg_info for package myproj
Installing collected packages: myproj
  Found existing installation: myproj 1.0-trunk.31053
    Uninstalling myproj:
      Successfully uninstalled myproj
  Running setup.py install for myproj
Successfully installed myproj
Cleaning up...