This section provides more detailed information about installing Bokeh. This
includes details about Bokeh’s prerequisites as well as Bokeh’s required and
Bokeh is officially supported (and continuously tested) on CPython versions
3.6+ only. It’s possible that Bokeh does work on other versions of Python, but
no guarantees or support are provided.
The easiest way to install Bokeh is to use conda. Conda is part of the
Anaconda Python Distribution, which is designed with scientific and data
analysis applications like Bokeh in mind.
If you use Anaconda on your system, installing with conda is the recommended
method. Otherwise, use pip.
Installing with conda
Make sure you have either Anaconda or Miniconda installed. Use
this command to install Bokeh:
conda install bokeh
Alternatively, if you want to make sure you always have the most recent
version of Bokeh after each new release, install from the
Bokeh channel directly:
conda install -c bokeh bokeh
Installing with pip
Use this command to install Bokeh:
pip install bokeh
On some systems, pip displays an error message about the wheel package
when installing tornado. This is a known issue, you can usually
ignore the error.
To verify whether the installation was successful, use this command:
You should see, among other things, a line with information on the installed
version of Bokeh.
If you receive an error instead, try searching for more information by using
the “bokeh” tag on Stack Overflow or asking a question in the
Bokeh Discourse community.
Once you have Bokeh installed, build your first visualization by following
the first steps guides.
Check the user guide for a comprehensive overview of all
the things you can do with Bokeh.
If you want to install a development version of Bokeh to contribute to the project,
please see the Getting Set Up instructions in the Developers.
For basic usage, Bokeh requires the following libraries:
All those packages are automatically installed if you use conda or
In addition to the required dependencies, some additional packages are
necessary for certain optional features:
Bokeh can display content in classic Jupyter notebooks as well as in
JupyterLab. Depending on your setup, there may be additional packages or
Jupyter extensions to install. See Using with Jupyter for full
Necessary for Extending Bokeh or for defining
CustomJS implementations in TypeScript.
Necessary to use the from_networkx() function
to generate Bokeh graph renderers directly from NetworkX data.
Necessary for the hexbin() function.
Additionally, having pandas installed makes some aspects of Bokeh simpler
to use. For example, glyph functions are able to automatically convert
pandas DataFrames to Bokeh data sources.
Necessary to enable detailed memory logging in the Bokeh server.
Necessary for Exporting plots to PNG and SVG images.
Necessary to make use of the bokeh.sphinxext Sphinx extension for
including Bokeh plots in Sphinx documentation.
Optionally, Bokeh can download and install a collection of sample data. This
includes a variety of freely available data tables and databases that you can
use with Bokeh. Because this sample data is rather large, it is not included in
Bokeh’s installation packages.
In Bokeh’s GitHub repository, you can find a number of examples. Those
examples also use this sample data.
After installing Bokeh, you can automatically download and install the
sample data with this command:
Alternatively, you can download and install the sample data from within your
If you want to change the location where Bokeh stores the sample data, check
the bokeh.sampledata reference for details.
BokehJS is Bokeh’s client-side runtime library. You can also use BokehJS as a
delivery network (CDN) at cdn.bokeh.org. The CDN uses the following naming
There are additional components to BokehJS that are necessary only for specific
The "-widgets" files are only necessary if you are using any of the
widgets built into Bokeh in bokeh.models.widgets.
The "-tables" files are only necessary if you are using Bokeh data
The "bokeh-api" files are required to use the BokehJS API and must be
loaded after the core BokehJS library.
For example, the links for version 2.0.1 are:
You should always set crossorigin="anonymous" on script tags that load
BokehJS from CDN.