The EnergyFlow package is written in pure Python and depends only on NumPy, the fundamental package for scientific computing with Python, and six, which is a lightweight module to patch some inconvenient differences between Python 2 and Python 3.

The EnergyFlow package is designed to work with Python 2.7, 3.5, 3.6, and 3.7. These can be installed from here. The latest stable version of Python 3 is highly recommended.

To install from PyPI using pip, make sure you have one of the supported versions of Python installed and that pip is available in the system path. Simply execute pip install energyflow and EnergyFlow will be installed in your default location for Python packages.

Bleeding edge install

EnergyFlow is hosted on GitHub and can be installed by cloning the repository and running python install. This is not generally recommend as the master branch may contain unstable features.


EnergyFlow relies on iGraph for generation of multigraphs. This is not required if using the provided graphs suits your needs. If you wish to generate your own graphs, make sure that iGraph is importable.


Since EnergyFlow relies on numpy.einsum to do most of the computational heavy lifting, newer versions of NumPy may provide changes/speedups in performance if einsum changes. NumPy 1.14.0 changed einsum to use tensordot when possible compared to 1.13.3, which only used c_einsum. This means that computations are faster on larger tensors but may be slower on smaller tensors. EnergyFlow currently uses only c_einsum because it was found to be substantially faster for typical pp-jet applications.