Forcing `pip` to recompile a previously installed package (numpy) after switching to a different Python binary
Solution 1
The problem is solved by pip uninstalling numpy (or any other troublesome package), then running
pip install numpy --no-cache-dir
to prevent pip from simply taking the cached installation and repeating it.
Solution 2
You can use --no-binary
and --ignore-installed
to rebuild a package as follows
pip install --user --force-reinstall --ignore-installed --no-binary :all: PackageName
5xum
Updated on February 03, 2020Comments
-
5xum about 4 years
This question is as much a question about my particular problem (which I sort of found a work-around, so it's not a burning issue) as it is about the general process I am using.
Setup (the part that works):
I have Python 2.7.9 installed locally on my Ubuntu 14.04, and I have a virtualenv in which I am running it. Everything is very much separated from the "system" Python, which I am not touching.
The part I did:
It all started well enough, with my Python installed and all libraries running. For example, I also
pip
installed numpy 1.10.1, it compiled for a while, then it worked just fine.The problem:
The problem is that for reasons beyond my control, I had to rebuild the python with
ucs4
enabled, that is I installed it using./configure --enable-unicode=ucs4
After doing this, I also uninstalled all libraries and reinstalled them using pip. However, it seems that the numpy library was not properly uninstalled because it installed instantly this time, and when I tried to import
numpy
into my new Python, I got an error message indicating that the numpy was compiled with theucs2
-enabled Python.This hypothesis is pretty solid, since I tried then to
pip install numpy==1.9.3
. The installation once again took a long time, and it produced a numpy version that works on the newucs4
enabled Python.Now, my question:
How can I get the numpy uninstallation process to delete all traces of the old numpy?
Edit:
I also tried to manually remove numpy by deleting it from my virtualenv
site-packages
directory. After deleting,import numpy
returned anImportError
as expected. I then reinstalled it (pip install numpy
) and it came back with the sameucs2
-related error.Edit 2:
The full
sys.path
seen by my virtualenv Python is['', '/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']
Also, it might be important to mention that the
/usr/local/lib/python2.7.9/
installation of python does not have numpy installed.