PyBEL is tested on both Python3 and legacy Python2 installations on Mac OS and Linux using Travis CI as well as on Windows using AppVeyor.



Download the latest stable code from PyPI with:

$ python3 -m pip install pybel

Get the Latest

Download the most recent code from GitHub with:

$ python3 -m pip install git+

For Developers

Clone the repository from GitHub and install 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 -e pybel[ndex] or multiple can be installed using a list like python3 -m pip install -e pybel[ndex,owl]. Likewise, for developer installation, extras can be installed in editable mode with python3 -m pip install -e .[ndex] or multiple can be installed using a list like python3 -m pip install -e .[neo4j,ndex]. The available extras are:


ndex2 supports download and upload to the Network Data Exchange.


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


  • 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.