I have an Ubuntu 16.04 machine that has multiple python 3 installations at /python/
and needs to be able to switch between them at will. One of these versions is Python 3.3, and pip didn't come pre-installed until Python 3.4.x, so I want to install pip into this python installation. I don't want to use distro packages because it needs to be actually integrated into the /python/python33 installation, I'm having trouble managing this:
get-pip.py
tries to uninstall the version of pip at /usr/bin
:
$ /tmp/get-pip.py --prefix /python/python33
Collecting pip
Using cached pip-9.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 8.1.2
Uninstalling pip-8.1.2:
Exception:
Traceback (most recent call last):
File "/tmp/tmpdgdWPZ/pip.zip/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/tmp/tmpdgdWPZ/pip.zip/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/tmp/tmpdgdWPZ/pip.zip/pip/req/req_set.py", line 778, in install
requirement.uninstall(auto_confirm=True)
File "/tmp/tmpdgdWPZ/pip.zip/pip/req/req_install.py", line 754, in uninstall
paths_to_remove.remove(auto_confirm)
File "/tmp/tmpdgdWPZ/pip.zip/pip/req/req_uninstall.py", line 115, in remove
renames(path, new_path)
File "/tmp/tmpdgdWPZ/pip.zip/pip/utils/__init__.py", line 267, in renames
shutil.move(old, new)
File "/usr/lib/python2.7/shutil.py", line 303, in move
os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/bin/pip'
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
If I add --ignore-installed
, it doesn't error out but is still looking at the version of pip at /usr/bin (the old 8.1.2 one that it's complaining about):
$ /tmp/get-pip.py --ignore-installed --prefix /python/python33
Collecting pip
Using cached pip-9.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-9.0.1
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
easy_install
doesn't work either:
$ export PYTHONPATH="$PYTHONPATH:/python/python33/"; /usr/bin/easy_install --prefix /python/python33 pip
TEST FAILED: /python/python33/lib/python2.7/site-packages does NOT support .pth files
error: bad install directory or PYTHONPATH
You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from. The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/python/python33/lib/python2.7/site-packages
and your PYTHONPATH environment variable currently contains:
'/pyqt/sip-4.13.1/site-packages:/pyqt/site-packages:/python/python33/'
Here are some of your options for correcting the problem:
* You can choose a different installation directory, i.e., one that is
on PYTHONPATH or supports .pth files
* You can add the installation directory to the PYTHONPATH environment
variable. (It must then also be on PYTHONPATH whenever you run
Python and want to use the package(s) you are installing.)
* You can set up the installation directory to support ".pth" files by
using one of the approaches described here:
https://pythonhosted.org/setuptools/easy_install.html#custom-installation-locations
Please make the appropriate changes for your system and try again.
And why is it trying to install into /python/python33/lib/python2.7/site-packages
? Is this the python 2 version of pip or something?
I've read a lot of related answers here on SO, but none of them have helped so far.