pip: переустановите пакет, даже если он существует - PullRequest
0 голосов
/ 30 октября 2018

Я хочу выполнить команду pip install -r requirements.txt;

Я хочу снова и снова запускать одну и ту же команду;

Проблема в том, что requirements.txt будет включать некоторые файлы колес, которые могут иметь ту же версию, но с другим исходным кодом;

Я хочу убедиться, что пакет будет переустановлен , то есть снова получен из моего пользовательского репозитория pip;

Мне известна эта тема , но различие между --ignore-installed и --force-reinstall не кажется мне очень ясным;

У меня есть, например, somepack==1.1, я изменяю исходный код и хочу, чтобы .whl снова извлекался из моего репо при выполнении pip install;

Какой я должен использовать? Должен ли я включить оба?

В чем их разница?

Пакет может иметь ту же версию, например somepack==1.1 или в какой-то момент могут иметь инкрементные версии. например somepack==1.2

Я хочу, чтобы он был всегда (пере) установлен;

edit : Это пипс help, который мне не очень понятен, по крайней мере, в вышеприведенном выпуске

  --force-reinstall           Reinstall all packages even if they are already up-to-date.
  -I, --ignore-installed      Ignore the installed packages (reinstalling instead).

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

При --force-reinstall существующие пакеты (и зависимости) сначала удаляются, а при --ignore-installed они не удаляются.

Таким образом, --force-reinstall является предпочтительным выбором , а --ignore-installed является более экстренным вариантом.

Вот пример вывода:

> pip install --force-reinstall ipdb
Collecting ipdb
Collecting ipython<6.0.0,>=5.0.0; python_version == "2.7" (from ipdb)
  Using cached https://<...>/ipython-5.8.0-py2-none-any.whl
Collecting setuptools (from ipdb)
<...>
Installing collected packages: six, wcwidth, prompt-toolkit, decorator, setuptools, <...>
  Found existing installation: six 1.11.0
    Uninstalling six-1.11.0:
      Successfully uninstalled six-1.11.0
  Found existing installation: wcwidth 0.1.7
    Uninstalling wcwidth-0.1.7:
      Successfully uninstalled wcwidth-0.1.7
<...>
Successfully installed backports.shutil-get-terminal-size-1.0.0 colorama-0.4.0 <...>


> pip install --ignore-installed ipdb
Collecting ipdb
Collecting ipython<6.0.0,>=5.0.0; python_version == "2.7" (from ipdb)
<...>
Collecting setuptools (from ipdb)
<...>
Installing collected packages: six, wcwidth, prompt-toolkit, decorator, setuptools, <...>
Successfully installed <...>
0 голосов
/ 30 октября 2018

Вы хотите:

pip install -r requirements.txt --upgrade --force-reinstall

--force-reinstall удалит существующие пакеты, а затем установит текущие версии.

--ignore-installed просто перезапишет существующую с текущей версией, но не удалит файлы, которые были удалены в обновлении, это означает, что в вашей установке библиотеки могут висеть файлы, которые не являются частью библиотеки.

--upgrade (избыточно в данном случае), выполняет принудительную переустановку только для тех пакетов, для которых существует новая версия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...