Di recente ho riscontrato un problema durante l'utilizzo pipdel -Iflag che volevo documentare da qualche parte:
-Isarà non disinstallare il pacchetto esistente prima di procedere; lo installerà solo su quello vecchio. Ciò significa che eventuali file che devono essere eliminati tra le versioni verranno invece lasciati in posizione. Ciò può causare comportamenti strani se tali file condividono nomi con altri moduli installati.
Ad esempio, supponiamo che esista un pacchetto denominato package. In uno dei packagefile s, usano import datetime. Ora, in package@2.0.0, questo punta al datetimemodulo di libreria standard , ma in package@3.0.0, hanno aggiunto un locale datetime.pyin sostituzione della versione di libreria standard (per qualsiasi motivo).
Ora diciamo che corro pip install package==3.0.0, ma poi mi rendo conto che in realtà volevo la versione 2.0.0. Se ora corro pip install -I package==2.0.0, il vecchio datetime.pyfile non verrà rimosso, quindi qualsiasi chiamata a import datetimeimporterà il modulo sbagliato.
Nel mio caso, questo si è manifestato con strani errori di sintassi perché la versione più recente del pacchetto ha aggiunto un file compatibile solo con Python 3 e quando ho effettuato il downgrade delle versioni del pacchetto per supportare Python 2, ho continuato a importare il modulo solo Python-3.
Sulla base di ciò, direi che la disinstallazione del vecchio pacchetto è sempre preferibile all'uso -Idurante l'aggiornamento delle versioni del pacchetto installato.
pip install MySQL_python==1.8.9