Recentemente, encontrei um problema ao usar pipo -Isinalizador que queria documentar em algum lugar:
-Inão vai desinstalar o pacote existente antes de prosseguir; apenas o instalará em cima do antigo. Isso significa que todos os arquivos que devem ser excluídos entre as versões serão deixados no lugar. Isso pode causar um comportamento estranho se esses arquivos compartilharem nomes com outros módulos instalados.
Por exemplo, digamos que haja um pacote chamado package. Em um dos packagearquivos s, eles usam import datetime. Agora, em package@2.0.0, isso aponta para o datetimemódulo da biblioteca padrão , mas em package@3.0.0, eles adicionaram um local datetime.pycomo um substituto para a versão da biblioteca padrão (por qualquer motivo).
Agora vamos dizer que corro pip install package==3.0.0, mas depois percebo que eu realmente queria a versão 2.0.0. Se eu executar agora pip install -I package==2.0.0, o datetime.pyarquivo antigo não será removido, portanto, qualquer chamada para import datetimeimportará o módulo errado.
No meu caso, isso se manifestou com estranhos erros de sintaxe, porque a versão mais recente do pacote adicionou um arquivo compatível apenas com o Python 3 e, quando desclassifiquei as versões do pacote para dar suporte ao Python 2, continuei importando o módulo somente do Python-3.
Com base nisso, eu argumentaria que a desinstalação do pacote antigo é sempre preferível ao uso -Iao atualizar as versões do pacote instalado.
pip install MySQL_python==1.8.9