440

I have both python2.7 and python3.2 installed in Ubuntu 12.04.
The symbolic link python links to python2.7.

When I type:

sudo pip install package-name

It will default install python2 version of package-name.

Some package supports both python2 and python3.
How to install python3 version of package-name via pip?

helloandre
  • 10,541
  • 8
  • 47
  • 64
kev
  • 155,172
  • 47
  • 273
  • 272
  • 2
    Are there separated `pip-2.7` and `pip-3.2` commands in your system? – Felix Yan May 26 '12 at 03:54
  • 1
    Can I change the first line of `/usr/bin/pip` from `#!/usr/bin/python` to `#!/usr/bin/python3` ? – kev May 26 '12 at 03:57
  • 4
    Yes, but I would recommend you to `cp` the `pip` to `pip-3.2` then change it, so you would get a better choice next time :) – Felix Yan May 26 '12 at 04:01
  • possible duplicate of [pip: dealing with multiple Python versions?](http://stackoverflow.com/questions/2812520/pip-dealing-with-multiple-python-versions) – Tim Jun 26 '15 at 11:13
  • If you are having trouble with pip-2.7, etc. Try running `whereis pip` from your command line. It seems they have changed the names to pip2.7 on Ubuntu 14.04. – tweirick Feb 24 '16 at 09:48
  • Run `pip3 install package-name` instead. It should be available by default nowadays. Check [akaIDIOT](https://stackoverflow.com/a/12262143/2641825)'s answer below for more details. – Paul Rougieux Nov 26 '18 at 12:59

18 Answers18

477

Ubuntu 12.10+ and Fedora 13+ have a package called python3-pip which will install pip-3.2 (or pip-3.3, pip-3.4 or pip3 for newer versions) without needing this jumping through hoops.


I came across this and fixed this without needing the likes of wget or virtualenvs (assuming Ubuntu 12.04):

  1. Install package python3-setuptools: run sudo aptitude install python3-setuptools, this will give you the command easy_install3.
  2. Install pip using Python 3's setuptools: run sudo easy_install3 pip, this will give you the command pip-3.2 like kev's solution.
  3. Install your PyPI packages: run sudo pip-3.2 install <package> (installing python packages into your base system requires root, of course).
  4. Profit!
akaIDIOT
  • 9,171
  • 3
  • 27
  • 30
  • 23
    Perfect and proper, this should be the accepted answer. However you should specify `sudo pip-3.2 install `, superuser permissions are required. – KomodoDave Sep 20 '12 at 14:56
  • I find it better to use `--user` to install in `~.local/`, than to use sudo. see pep 370 – jarondl Sep 26 '12 at 17:17
  • Doing this in Ubuntu 12.04 leaves me with pip-3.2 and pip both installing to the Python 3 directory, with no pip-2.7 available. I had to update pip for Python 2 to resolve both issues. – chobok Oct 06 '12 at 23:42
  • 53
    You can combine steps 1 and 2 and just do: ``sudo apt-get install python3-pip`` – Shashank Bharadwaj Oct 23 '12 at 23:37
  • 3
    http://packages.ubuntu.com shows this super handy package for Ubuntu 12.10, but not for 12.04: http://packages.ubuntu.com/search?keywords=python3-pip&searchon=names&exact=1&suite=precise&section=all (great find though ;)) – akaIDIOT Oct 24 '12 at 09:08
  • In Ubuntu 13.04 and others, pip-3.3 is the current command. Maybe the answer should be updated? – papirrin Aug 09 '13 at 06:51
  • @papirrin for recent Ubuntus that's true indeed, though the package `python3-pip` is a lot easier than going through `easy_install3`. I'll add a disclaimer to the answer. – akaIDIOT Aug 09 '13 at 10:54
  • Also available in Debian 7.7 (wheezy). – danorton Nov 07 '14 at 20:48
  • 18
    pip-3.3, pip-3.4 etc no longer work. It is now just: pip, pip2, pip3. (At least on Ubuntu 14.04) – Caleb Stanford Feb 13 '15 at 13:19
  • 1
    this solution also works on debian wheezy and kali linux – repzero Aug 14 '15 at 00:42
  • As of today, I believe apt-get gives you the outdated 1.5.6 version; if you don't want an AssertionErrror during `pip freeze > requirements` (or other potential bugs), do install from source for the latest version and save yourself some headache. – Yibo Yang Oct 03 '15 at 06:34
  • I'm still on Ubuntu 12.04, and I don't get `pip-3.2` either. I have `pip3.5` but it doesn't really install Python 3 stuff. It complains that (the Python 2 version of) `pandas` is already installed. – icedwater Jan 29 '16 at 05:16
  • pip>=8 does not work with Python 3.2. So you would need to do `/usr/bin/easy_install3 --user "pip<8"`. – Albert Nov 17 '16 at 10:27
  • Doesn't work with my Ubuntu 18.04 based system. The package `python3-setuptools` does not give me `easy_install3`. – jbo5112 Jul 02 '19 at 02:33
  • @jbo5112 as per the note above the answer, for newer versions `sudo apt install python3-pip` is the easier option. – akaIDIOT Jul 08 '19 at 10:59
267

You may want to build a virtualenv of python3, then install packages of python3 after activating the virtualenv. So your system won't be messed up :)

This could be something like:

virtualenv -p /usr/bin/python3 py3env
source py3env/bin/activate
pip install package-name
Felix Yan
  • 14,841
  • 7
  • 48
  • 61
212

Short Answer

sudo apt-get install python3-pip
sudo pip3 install MODULE_NAME

Source: Shashank Bharadwaj's comment

Long Answer

The short answer applies only on newer systems. On some versions of Ubuntu the command is pip-3.2:

sudo pip-3.2 install MODULE_NAME

If it doesn't work, this method should work for any Linux distro and supported version:

sudo apt-get install curl
curl https://bootstrap.pypa.io/get-pip.py | sudo python3
sudo pip3 install MODULE_NAME

If you don't have curl, use wget. If you don't have sudo, switch to root. If pip3 symlink does not exists, check for something like pip-3.X

Much python packages require also the dev package, so install it too:

sudo apt-get install python3-dev

Sources:
python installing packages with pip
Pip latest install

Check also Tobu's answer if you want an even more upgraded version of Python.

I want to add that using a virtual environment is usually the preferred way to develop a python application, so @felixyan answer is probably the best in an ideal world. But if you really want to install that package globally, or if need to test / use it frequently without activating a virtual environment, I suppose installing it as a global package is the way to go.

Chirag Maliwal
  • 442
  • 11
  • 25
Marco Sulla
  • 15,299
  • 14
  • 65
  • 100
52

Well, on ubuntu 13.10/14.04, things are a little different.

Install

$ sudo apt-get install python3-pip

Install packages

$ sudo pip3 install packagename

NOT pip-3.3 install

laike9m
  • 18,344
  • 20
  • 107
  • 140
42

The easiest way to install latest pip2/pip3 and corresponding packages:

curl https://bootstrap.pypa.io/get-pip.py | python2
pip2 install package-name    

curl https://bootstrap.pypa.io/get-pip.py | python3
pip3 install package-name

Note: please run these commands as root

kev
  • 155,172
  • 47
  • 273
  • 272
37

I had the same problem while trying to install pylab, and I have found this link

So what I have done to install pylab within Python 3 is:

python3 -m pip install SomePackage

It has worked properly, and as you can see in the link you can do this for every Python version you have, so I guess this solves your problem.

lmiguelvargasf
  • 63,191
  • 45
  • 217
  • 228
  • Though Fedora has a `python3-pip` package, it does not create a `pip3` or `pip-3` command as suggested in other answers. This answer indeed works. – Skippy le Grand Gourou Feb 18 '16 at 11:48
  • 2
    This works great, but it assumes that `pip` has already been installed via: `sudo apt-get install python3-pip` – Gabriel Feb 22 '17 at 16:00
14

Old question, but none of the answers satisfies me. One of my systems is running Ubuntu 12.04 LTS and for some reason there's no package python3-pip or python-pip for Python 3. So here is what I've done (all commands were executed as root):

  • Install setuptools for Python3 in case you haven't.

    apt-get install python3-setuptools
    

    or

    aptitude install python3-setuptools
    
  • With Python 2.4+ you can invoke easy_install with specific Python version by using python -m easy_install. So pip for Python 3 could be installed by:

    python3 -m easy_install pip
    
  • That's it, you got pip for Python 3. Now just invoke pip with the specific version of Python to install package for Python 3. For example, with Python 3.2 installed on my system, I used:

    pip-3.2 install [package]
    
Ha-Duong Nguyen
  • 1,373
  • 1
  • 14
  • 22
9

If you have pip installed in both pythons, and both are in your path, just use:

$ pip-2.7 install PACKAGENAME
$ pip-3.2 install PACKAGENAME

References:

This is a duplicate of question #2812520

Community
  • 1
  • 1
Hugo Lopes Tavares
  • 28,528
  • 5
  • 47
  • 45
9

If your system has python2 as default, use below command to install packages to python3

$ python3 -m pip install <package-name>

ketankk
  • 2,578
  • 1
  • 29
  • 27
4

Easy enough:

sudo aptitude install python3-pip
pip-3.2 install --user pkg

If you want Python 3.3, which isn't the default as of Ubuntu 12.10:

sudo aptitude install python3-pip python3.3
python3.3 -m pip.runner install --user pkg
Tobu
  • 24,771
  • 4
  • 91
  • 98
4

You can alternatively just run pip3 install packagename instead of pip,

Fahtima
  • 401
  • 1
  • 3
  • 9
  • 1
    Your answer is a duplicate to many answers on this page. (Search "pip3" in text) I don't see any added value of this. – hynekcer May 09 '17 at 22:02
3

Firstly, you need to install pip for the Python 3 installation that you want. Then you run that pip to install packages for that Python version.

Since you have both pip and python 3 in /usr/bin, I assume they are both installed with a package manager of some sort. That package manager should also have a Python 3 pip. That's the one you should install.

Felix' recommendation of virtualenv is a good one. If you are only testing, or you are doing development, then you shouldn't install the package in the system python. Using virtualenv, or even building your own Pythons for development, is better in those cases.

But if you actually do want to install this package in the system python, installing pip for Python 3 is the way to go.

Lennart Regebro
  • 167,292
  • 41
  • 224
  • 251
3

Although the question relates to Ubuntu, let me contribute by saying that I'm on Mac and my python command defaults to Python 2.7.5. I have Python 3 as well, accessible via python3, so knowing the pip package origin, I just downloaded it and issued sudo python3 setup.py install against it and, surely enough, only Python 3 has now this module inside its site packages. Hope this helps a wandering Mac-stranger.

Nixter
  • 51
  • 4
1

Execute the pip binary directly.

First locate the version of PIP you want.

jon-mint python3.3 # whereis ip
ip: /bin/ip /sbin/ip /usr/share/man/man8/ip.8.gz /usr/share/man/man7/ip.7.gz

Then execute.

jon-mint python3.3 # pip3.3 install pexpect
Downloading/unpacking pexpect
  Downloading pexpect-3.2.tar.gz (131kB): 131kB downloaded
  Running setup.py (path:/tmp/pip_build_root/pexpect/setup.py) egg_info for package pexpect

Installing collected packages: pexpect
  Running setup.py install for pexpect

Successfully installed pexpect
Cleaning up...
jonnymac
  • 43
  • 6
0
  1. You should install ALL dependencies:

    sudo apt-get install build-essential python3-dev python3-setuptools python3-numpy python3-scipy libatlas-dev libatlas3gf-base

  2. Install pip3(if you have installed, please look step 3):

    sudo apt-get install python3-pip

  3. Iinstall scikit-learn by pip3

    pip3 install -U scikit-learn

  4. Open your terminal and entry python3 environment, type import sklearn to check it.

cigien
  • 57,834
  • 11
  • 73
  • 112
0

To install pip for python3 use should use pip3 instead of pip. To install python in ubuntu 18.08 bionic
before installing a version of python, activate virtual environment so that it won't have any problem in a future versions of python.

virtualenv -p /usr/bin/python3 py3env
source py3env/bin/activate

then install the actual python version you want.

>> sudo apt-get install python3.7

To install the required pip package in ubuntu
>> sudo apt-get install python3-pip

gunarevuri
  • 397
  • 3
  • 9
0

You Can Simply type in terminal/console .

Commands

sudo apt update
sudo apt upgrade
sudo apt install python3-pip3
pip3 install package-name
-1

Another way to install python3 is using wget. Below are the steps for installation.

wget http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tar xJf ./Python-3.3.5.tar.xz
cd ./Python-3.3.5
./configure --prefix=/opt/python3.3
make && sudo make install

Also,one can create an alias for the same using

echo 'alias py="/opt/python3.3/bin/python3.3"' >> ~/.bashrc

Now open a new terminal and type py and press Enter.

arpiagar
  • 4,314
  • 1
  • 19
  • 12