Search code examples
pythonsetuptoolspip

How to undo a Python setuptools --prefix path blunder


When I installed Python's setuptools I absent mindedly tacked on a --prefix path I had been using on another machine:

sh setuptools-0.6c11-py2.7.egg --prefix=/opt/python2.7.2

Now after this blunder when I try to install pip I get the following error:

[root@kkdev src]# easy_install pip
Searching for pip
Best match: pip 1.0.2
Processing pip-1.0.2-py2.7.egg
pip 1.0.2 is already the active version in easy-install.pth
Installing pip script to /usr/bin
error: /usr/bin/pip: No such file or directory

What's happening is that a symbolic link is being created that points to the folder I specified in the --prefix path:

[root@kkdev src]# ls -al /usr/bin/pip
lrwxrwxrwx 1 root root 24 Nov  5 17:01 /usr/bin/pip -> /opt/python2.7.2/bin/pip

I deleted this link and then re-ran the setuptools installer and specified the correct prefix (my Python install lives in /usr/lib/python2.7):

sh setuptools-0.6c11-py2.7.egg --prefix=/usr

I then re-ran easy_install pip and it looked like I'd fixed my finger trouble. However when I went to install virtualenv I encountered the same problem:

[root@kkdev src]# pip install virtualenv

[uninteresting installer dialogue snipped]

Installing virtualenv script to /usr/bin

error: /usr/bin/virtualenv: No such file or directory

Again the wrong path is being used to create the symbolic link to where virtualenv is installed:

[root@kkdev src]# ls -al /usr/bin/virtualenv
lrwxrwxrwx 1 root root 31 Nov  5 17:01 /usr/bin/virtualenv -> /opt/python2.7.2/bin/virtualenv

(I'm running Fedora 15 32bit which has Python 2.7.1 installed out of the box)

How do I fix this permanently?


Solution

  • I managed to get back to square one by using brute force and eradicating any and all evidence of setuptools, easy_install and pip from my site-packages folder.

    After that I re-ran sh setuptools-0.6c11-py2.7.egg without the --prefix switch and things are as they should be now.