web-dev-qa-db-fra.com

Forcer `pip` à recompiler un paquet précédemment installé (numpy) après être passé à un autre Python binaire

Cette question est autant une question sur mon problème particulier (que j'ai en quelque sorte trouvé une solution de contournement, donc ce n'est pas un problème brûlant) que sur le processus général que j'utilise.


Configuration (la partie qui fonctionne):

J'ai Python 2.7.9 installé localement sur mon Ubuntu 14.04, et j'ai un virtualenv dans lequel je l'exécute. Tout est très séparé du Python "système", dont je ne suis pas émouvant.


La partie que j'ai faite:

Tout a commencé assez bien, avec mon Python installé et toutes les bibliothèques en cours d'exécution. Par exemple, j'ai également pip installé numpy 1.10.1, il a compilé pendant un certain temps, puis cela a fonctionné ça va.

Le problème:

Le problème est que pour des raisons indépendantes de ma volonté, j'ai dû reconstruire le python avec ucs4 Activé, c'est-à-dire que je l'ai installé en utilisant

./configure --enable-unicode=ucs4

Après cela, j'ai également désinstallé toutes les bibliothèques et les ai réinstallées à l'aide de pip. Cependant, il semble que la bibliothèque numpy n'ait pas été correctement désinstallée car elle s'est installée instantanément cette fois, et lorsque j'ai essayé d'importer numpy dans mon nouveau Python, j'ai reçu un message d'erreur indiquant que numpy a été compilé avec le ucs2 - Python activé.

Cette hypothèse est assez solide, puisque j'ai alors essayé de pip install numpy==1.9.3. L'installation a de nouveau pris beaucoup de temps et a produit une version numpy qui fonctionne sur le nouveau Python activé ucs4.

Maintenant, ma question:

Comment puis-je obtenir le processus de désinstallation de numpy pour supprimer toutes les traces de l'ancien numpy?


Modifier :

J'ai également essayé de supprimer manuellement numpy en le supprimant de mon répertoire virtualenv site-packages. Après la suppression, import numpy A renvoyé un ImportError comme prévu. Je l'ai ensuite réinstallé (pip install numpy) Et il est revenu avec la même erreur liée à ucs2.

Édition 2 :

Le sys.path Complet vu par mon virtualenv Python est

['',
 '/home/jkralj/.virtualenvs/work/lib/python27.Zip',
 '/home/jkralj/.virtualenvs/work/lib/python2.7',
 '/home/jkralj/.virtualenvs/work/lib/python2.7/plat-linux2',
 '/home/jkralj/.virtualenvs/work/lib/python2.7/lib-tk',
 '/home/jkralj/.virtualenvs/work/lib/python2.7/lib-old',
 '/home/jkralj/.virtualenvs/work/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7.9/lib/python2.7',
 '/usr/local/lib/python2.7.9/lib/python2.7/plat-linux2',
 '/usr/local/lib/python2.7.9/lib/python2.7/lib-tk',
 '/home/jkralj/.virtualenvs/work/lib/python2.7/site-packages']

De plus, il peut être important de mentionner que l'installation de /usr/local/lib/python2.7.9/ De python ne fait pas avoir numpy installé.

19
5xum

Vous pouvez utiliser --no-binary et --ignore-installed pour reconstruire un package comme suit

pip install --user --force-reinstall --ignore-installed --no-binary :all: PackageName
28
Frank Breitling