The latest stable code can be installed from PyPI with:

$ python3 -m pip install pybel

The most recent code can be installed from the source on GitHub with:

$ python3 -m pip install git+

For developers, the repository can be cloned from GitHub and installed in editable mode with:

$ git clone
$ cd pybel
$ python3 -m pip install -e .


The makes use of the extras_require argument of setuptools.setup() in order to make some heavy packages that support special features of PyBEL optional to install, in order to make the installation more lean by default. A single extra can be installed from PyPI like python3 -m pip install pybel[neo4j] or multiple can be installed using a list like python3 -m pip install pybel[neo4j,indra]. Likewise, for developer installation, extras can be installed in editable mode with python3 -m pip install -e .[neo4j] or multiple can be installed using a list like python3 -m pip install -e .[neo4j,indra]. The available extras are:


This extension installs the py2neo package to support upload and download to Neo4j databases.

See also


This extra installs support for indra, the integrated network dynamical reasoner and assembler. Because it also represents biology in BEL-like statements, many statements from PyBEL can be converted to INDRA, and visa-versa. This package also enables the import of BioPAX, SBML, and SBGN into BEL.

See also


This extra installs support for visualizing BEL graphs in Jupyter notebooks.

See also




  • PyBEL extends the networkx for its core data structure. Many of the graphical aspects of networkx depend on matplotlib, which is an optional dependency.

  • If HTMLlib5 is installed, the test that’s supposed to fail on a web page being missing actually tries to parse it as RDFa, and doesn’t fail. Disregard this.


During the current development cycle, programmatic access to the definition and graph caches might become unstable. If you have any problems working with the database, try removing it with one of the following commands:

  1. Running pybel manage drop (unix)

  2. Running python3 -m pybel manage drop (windows)

  3. Removing the folder ~/.pybel

PyBEL will build a new database and populate it on the next run.