Recientemente me encontré con un problema al usar pipla -Ibandera que quería documentar en alguna parte:
-Iserá no desinstalar el paquete existente antes de proceder; simplemente lo instalará sobre el anterior. Esto significa que los archivos que deben eliminarse entre versiones se dejarán en su lugar. Esto puede causar un comportamiento extraño si esos archivos comparten nombres con otros módulos instalados.
Por ejemplo, digamos que hay un paquete llamado package. En uno de packagelos archivos s, usan import datetime. Ahora, en package@2.0.0, esto apunta al datetimemódulo de biblioteca estándar , pero en package@3.0.0, agregaron un local datetime.pycomo reemplazo de la versión de biblioteca estándar (por cualquier razón).
Ahora digamos que corro pip install package==3.0.0, pero luego me doy cuenta de que realmente quería la versión 2.0.0. Si ahora ejecuto pip install -I package==2.0.0, el datetime.pyarchivo anterior no se eliminará, por lo que cualquier llamada a import datetimeimportará el módulo incorrecto.
En mi caso, esto se manifestó con errores de sintaxis extraños porque la versión más nueva del paquete agregó un archivo que solo era compatible con Python 3, y cuando bajé las versiones del paquete para admitir Python 2, continué importando el módulo solo Python-3.
En base a esto, argumentaría que desinstalar el paquete anterior siempre es preferible a usar -Ial actualizar las versiones instaladas del paquete.
pip install MySQL_python==1.8.9