Di recente ho riscontrato un problema durante l'utilizzo pip
del -I
flag che volevo documentare da qualche parte:
-I
sarà 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 package
file s, usano import datetime
. Ora, in package@2.0.0
, questo punta al datetime
modulo di libreria standard , ma in package@3.0.0
, hanno aggiunto un locale datetime.py
in 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.py
file non verrà rimosso, quindi qualsiasi chiamata a import datetime
importerà 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 -I
durante l'aggiornamento delle versioni del pacchetto installato.
pip install MySQL_python==1.8.9