Недавно я столкнулся с проблемой при использовании pip«s -Iфлаг , который я хотел где - нибудь документ:
-Iбудет не удалить существующий пакет перед продолжением; он просто установит его поверх старого. Это означает, что любые файлы, которые должны быть удалены между версиями, вместо этого останутся на месте. Это может вызвать странное поведение, если эти файлы имеют общие имена с другими установленными модулями.
Например, скажем, есть пакет с именем package. В одном из packageфайлов они используют import datetime. Теперь, package@2.0.0это указывает на datetimeмодуль стандартной библиотеки , но package@3.0.0они добавили local datetime.pyв качестве замены стандартной версии библиотеки (по любой причине).
Теперь допустим, что я бегу pip install package==3.0.0, но потом пойму, что я на самом деле хотел версию 2.0.0. Если я сейчас запустите pip install -I package==2.0.0, старый datetime.pyфайл не будет удален, поэтому любые вызовы import datetimeимпортируют не тот модуль.
В моем случае это проявлялось в странных синтаксических ошибках, потому что в новой версии пакета был добавлен файл, совместимый только с Python 3, а когда я понизил версию пакета для поддержки Python 2, я продолжил импортировать модуль только для Python-3.
Исходя из этого, я бы сказал, что удаление старого пакета всегда предпочтительнее, чем его использование -Iпри обновлении версий установленных пакетов.
pip install MySQL_python==1.8.9