Recentemente, encontrei um problema ao usar pip
o -I
sinalizador que queria documentar em algum lugar:
-I
nã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 package
arquivos s, eles usam import datetime
. Agora, em package@2.0.0
, isso aponta para o datetime
módulo da biblioteca padrão , mas em package@3.0.0
, eles adicionaram um local datetime.py
como 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.py
arquivo antigo não será removido, portanto, qualquer chamada para import datetime
importará 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 -I
ao atualizar as versões do pacote instalado.
pip install MySQL_python==1.8.9