How to install a Python package from within IPython?

47,130

Solution 1

The best way to do this in modern ipython or jupyter is to use the %pip magic:

%pip install my_package

Solution 2

See the accepted answer from @Chronial which is the best way to do this in modern ipython or jupyter (as of 2018) is to use the %pip magic:

%pip install my_package

The answer below from 2011 is now outdated: See the accepted answer for an easier way to do this in modern jupyter.

You can use the ! prefix like this:

!pip install packagename

The ! prefix is a short-hand for the %sc command to run a shell command.

You can also use the !! prefix which is a short-hand for the %sx command to execute a shell command and capture its output (saved into the _ variable by default).

Solution 3

This answer is outdated: See the accepted answer for an easier way to this in modern jupyter.


aculich's answer will not work in all circumstances, for example:

  • If you installed ipython/jupyter in a venv and run it directly via the venv's python binary
  • If you have multiple python versions, like EntryLevelR.

The correct command is:

import sys
!{sys.executable} -m pip install requests

Solution 4

import pip
pip.main(['install', 'package_name'])

The above shell-based answers don't work unless pip is in your $PATH (e.g. on Windows).

Solution 5

I like hurfdurf's answer, but on its own iPython may not recognize the new module (especially if it adds to the library path). Here's an augmented example with iPython 3:

import pip
pip.main(['install','pygame'])
# import pygame at this point can report ImportError: No module named 'pygame'
import site
site.main()
# now with refreshed module path...
import pygame
Share:
47,130
satoru
Author by

satoru

Curious programmer.

Updated on July 09, 2022

Comments

  • satoru
    satoru almost 2 years

    I wonder if it's possible to install python packages without leaving the IPython shell.