Recientemente me encontré con un problema al usar pip
la -I
bandera que quería documentar en alguna parte:
-I
será 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 package
los archivos s, usan import datetime
. Ahora, en package@2.0.0
, esto apunta al datetime
módulo de biblioteca estándar , pero en package@3.0.0
, agregaron un local datetime.py
como 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.py
archivo anterior no se eliminará, por lo que cualquier llamada a import datetime
importará 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 -I
al actualizar las versiones instaladas del paquete.
pip install MySQL_python==1.8.9