La radice del problema sono spesso gli script obsoleti nella sottodirectory bin
(Linux) o Scripts
(Windows). Spiegherò questo usando il problema che ho riscontrato come esempio.
Avevo installato virtualenv versione 1.10 nei miei pacchetti del sito dell'utente (il fatto che sia nei pacchetti del sito dell'utente e non nei pacchetti del sito di sistema è irrilevante qui)
pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10
Dopo averlo aggiornato alla versione 1.11 ho ricevuto il seguente errore:
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
Il file /home/users/pdobrogost/.local/bin/virtualenv
menzionato nel messaggio di errore era simile al seguente:
#!/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')()
)
Lì, vediamo che lo virtualenv
script non è stato aggiornato e richiede ancora la versione 1.10 precedentemente installata di virtualenv.
Ora, reinstallando virtualenv in questo modo
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...
non aiuta (nessuno dei due pip install --user --upgrade --force-reinstall virtualenv
) perché lo script /home/users/pdobrogost/.local/bin/virtualenv
rimane invariato.
L'unico modo per risolvere il problema era rimuovere manualmente gli script virtualenv * dalla /home/users/pdobrogost/.local/bin/
cartella e installare nuovamente virtualenv. Successivamente, gli script appena generati fanno riferimento alla versione corretta del pacchetto:
pdobrogost@host:~$ virtualenv --version
1.11