Niedawno wpadł problem przy korzystaniu pip„s -Iflagę że chciałem gdzieś dokumentu:
-Ibędzie nie odinstalować istniejący pakiet przed postępowaniem; po prostu zainstaluje go na starym. Oznacza to, że wszystkie pliki, które powinny zostać usunięte między wersjami, pozostaną na miejscu. Może to powodować dziwne zachowanie, jeśli pliki te mają wspólne nazwy z innymi zainstalowanymi modułami.
Załóżmy na przykład, że istnieje pakiet o nazwie package. W jednym z packageplików używają import datetime. Teraz, w package@2.0.0, wskazuje to na standardowy datetimemoduł biblioteki , ale w package@3.0.0dodali lokalny datetime.pyjako zamiennik standardowej wersji biblioteki (z dowolnego powodu).
Powiedzmy teraz, że uruchamiam pip install package==3.0.0, ale potem zdaję sobie sprawę, że naprawdę chciałem wersji 2.0.0. Jeśli teraz uruchomię pip install -I package==2.0.0, stary datetime.pyplik nie zostanie usunięty, więc wszelkie wywołania do import datetimezaimportują niewłaściwy moduł.
W moim przypadku objawiało się to dziwnymi błędami składniowymi, ponieważ nowsza wersja pakietu dodała plik, który był zgodny tylko z Python 3, a kiedy obniżyłem wersje pakietów do obsługi Python 2, kontynuowałem importowanie modułu tylko do Python-3.
Na tej podstawie argumentowałbym, że odinstalowanie starego pakietu jest zawsze lepsze niż -Ipodczas aktualizacji zainstalowanych wersji pakietu.
pip install MySQL_python==1.8.9