La racine du problème est souvent des scripts obsolètes dans le sous-répertoire bin
(Linux) ou Scripts
(Windows). Je vais expliquer cela en utilisant le problème que je me suis rencontré à titre d'exemple.
J'ai installé la version 1.10 de virtualenv dans mes packages de site utilisateur (le fait qu'il se trouve dans des packages de site utilisateur et non dans des packages de site sytem n'est pas pertinent ici)
pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10
Après l'avoir mis à niveau vers la version 1.11, j'ai eu l'erreur suivante:
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
Le fichier /home/users/pdobrogost/.local/bin/virtualenv
mentionné dans le message d'erreur ressemblait à ceci:
#!/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à, nous voyons que le virtualenv
script n'a pas été mis à jour et nécessite toujours la version 1.10 de virtualenv précédemment installée.
Maintenant, réinstaller virtualenv comme ça
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...
n'aide pas (ni l'un ni l'autre pip install --user --upgrade --force-reinstall virtualenv
) car le script /home/users/pdobrogost/.local/bin/virtualenv
reste inchangé.
La seule façon de résoudre ce problème était de supprimer manuellement les scripts virtualenv * du /home/users/pdobrogost/.local/bin/
dossier et de réinstaller virtualenv. Après cela, les scripts nouvellement générés se réfèrent à la version appropriée du package:
pdobrogost@host:~$ virtualenv --version
1.11