La raíz del problema a menudo son scripts obsoletos en el subdirectorio bin
(Linux) o Scripts
(Windows). Explicaré esto usando el problema que me encontré como ejemplo.
Tenía instalada la versión 1.10 de virtualenv en mis paquetes de sitio de usuario (el hecho de que esté en paquetes de sitio de usuario no en paquetes de sitio de sistema es irrelevante aquí)
pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10
Después de actualizarlo a la versión 1.11 recibí el siguiente error:
pdobrogost@host:~$ virtualenv --version
Traceback (most recent call last):
File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
from pkg_resources import load_entry_point
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
return self.__dep_map
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
if insert:
pkg_resources.DistributionNotFound: virtualenv==1.10
El archivo /home/users/pdobrogost/.local/bin/virtualenv
mencionado en el mensaje de error se veía así:
#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
)
Allí, vemos que el virtualenv
script no se actualizó y aún requiere la versión 1.10 de virtualenv instalada previamente.
Ahora, reinstalando virtualenv como este
pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...
no ayuda (tampoco pip install --user --upgrade --force-reinstall virtualenv
) porque el script no /home/users/pdobrogost/.local/bin/virtualenv
se modifica.
La única forma en que pude solucionar esto fue eliminando manualmente los scripts virtualenv * de la /home/users/pdobrogost/.local/bin/
carpeta e instalando virtualenv nuevamente. Después de esto, los scripts recién generados se refieren a la versión adecuada del paquete:
pdobrogost@host:~$ virtualenv --version
1.11