Biopython README file

The Biopython Project is an international association of developers of freely available Python tools for computational molecular biology.

Our user-centric documentation is hosted on including the main Biopython Tutorial and Cookbook:

The NEWS file summarises the changes in each release of Biopython.

The Biopython package is open source software made available under generous terms. Please see the LICENSE file for further details.

If you use Biopython in work contributing to a scientific publication, we ask that you cite our application note (below) or one of the module specific publications (listed on our website):

Cock, P.J.A. et al. Biopython: freely available Python tools for computational molecular biology and bioinformatics. Bioinformatics 2009 Jun 1; 25(11) 1422-3 pmid:19304878

For the impatient

Python 2.7.9 onwards, and Python 3.4 onwards, include the package management
system "pip" which should allow you to install Biopython (and its dependency
NumPy if needed), upgrade or uninstall with just one terminal command::

pip install biopython
pip install --upgrade biopython
pip uninstall biopython

Since Biopython 1.70 we have provided pre-compiled binary wheel packages on
PyPI for Linux, Mac OS X and Windows. This means pip install should be quick,
and not require a compiler.

As a developer or potential contributor, you may wish to download, build and
install Biopython yourself. This is described below.

Python Requirements

We currently recommend using Python 3.7 from

Biopython is currently supported and tested on the following Python

  • Python 2.7, 3.4, 3.5, 3.6, 3.7 -- see

    Python 3 is the primary development platform for Biopython. We will drop
    support for Python 2.7 in early 2020, in line with the end-of-life or
    sunset date for Python 2.7 itself.

  • PyPy2.7 v6.0.0, or PyPy3.5 v6.0.0 -- see

    Aside from Bio.trie (which does not compile as marshal.h is
    currently missing under PyPy), everything should work. Older versions
    of PyPy mostly work too.

  • Jython 2.7 -- see

    We have decided to deprecate support for Jython, but aside from
    Bio.Restriction, modules with C code, or dependent on SQLite3 or NumPy,
    everything should work. There are some known issues with test failures
    which have not yet been resolved.

Biopython 1.68 was our final release to support Python 2.6.

Optional Dependencies

Biopython requires NumPy (see which will be installed
automatically if you install Biopython with pip (see below for compiling
Biopython yourself).

Depending on which parts of Biopython you plan to use, there are a number of
other optional Python dependencies, which can be installed later if needed:

Note that some of these libraries are not available for PyPy or Jython,
and not all are available for Python 3 yet either.

In addition there are a number of useful third party tools you may wish to
install such as standalone NCBI BLAST, EMBOSS or ClustalW.

Installation From Source

We recommend using the pre-compiled binary wheels available on PyPI using::

pip install biopython

However, if you need to compile Biopython yourself, the following are
required at compile time - unless you are using Jython (support for which is

  • Python including development header files like python.h, which on Linux
    are often not installed by default (trying looking for and installing a
    package named python-dev or python-devel as well as the python

  • Appropriate C compiler for your version of Python, for example GCC on Linux,
    MSVC on Windows. For Mac OS X, or as it is now branded, macOS, use Apple's
    command line tools, which can be installed with the terminal command::

    xcode-select --install

    This will offer to install Apple's XCode development suite - you can, but it
    is not needed and takes a lot of disk space.

Then either download and decompress our source code, or fetch it using git.
Now change directory to the Biopython source code folder and run::

python build
python test
sudo python install

Substitute python with your specific version, for example python3,
pypy or jython.

To exlude tests that require an internet connection (and which may take a long
time), use the --offline option::

python test --offline

If you need to do additional configuration, e.g. changing the install directory
prefix, please type python


Biopython includes a suite of regression tests to check if everything is
running correctly. To run the tests, go to the biopython source code
directory and type::

python build
python test

If you want to skip the online tests (which is recommended when doing repeated
testing), use::

python test --offline

Do not panic if you see messages warning of skipped tests::

test_DocSQL ... skipping. Install MySQLdb if you want to use Bio.DocSQL.

This most likely means that a package is not installed. You can
ignore this if it occurs in the tests for a module that you were not
planning on using. If you did want to use that module, please install
the required dependency and re-run the tests.

Some of the tests may fail due to network issues, this is often down to
chance or a service outage. If the problem does not go away on
re-running the tests, you can use the --offline option.

There is more testing information in the Biopython Tutorial & Cookbook.

Experimental code

Biopython 1.61 introduced a new warning, Bio.BiopythonExperimentalWarning,
which is used to mark any experimental code included in the otherwise
stable Biopython releases. Such 'beta' level code is ready for wider
testing, but still likely to change, and should only be tried by early
adopters in order to give feedback via the biopython-dev mailing list.

We'd expect such experimental code to reach stable status within one or two
releases, at which point our normal policies about trying to preserve
backwards compatibility would apply.


While we try to ship a robust package, bugs inevitably pop up. If you are
having problems that might be caused by a bug in Biopython, it is possible
that it has already been identified. Update to the latest release if you are
not using it already, and retry. If the problem persists, please search our
bug database and our mailing lists to see if it has already been reported
(and hopefully fixed), and if not please do report the bug. We can't fix
problems we don't know about ;)

Issue tracker:

If you suspect the problem lies within a parser, it is likely that the data
format has changed and broken the parsing code. (The text BLAST and GenBank
formats seem to be particularly fragile.) Thus, the parsing code in
Biopython is sometimes updated faster than we can build Biopython releases.
You can get the most recent parser by pulling the relevant files (e.g. the
ones in Bio.SeqIO or Bio.Blast) from our git repository. However, be
careful when doing this, because the code in github is not as well-tested
as released code, and may contain new dependencies.

In any bug report, please let us know:

  1. Which operating system and hardware (32 bit or 64 bit) you are using
  2. Python version
  3. Biopython version (or git commit/date)
  4. Traceback that occurs (the full error message)

And also ideally:

  1. Example code that breaks
  2. A data file that causes the problem

Contributing, Bug Reports

Biopython is run by volunteers from all over the world, with many types of
backgrounds. We are always looking for people interested in helping with code
development, web-site management, documentation writing, technical
administration, and whatever else comes up.

If you wish to contribute, please first read CONTRIBUTING.rst <>_ here,
visit our web site and join our mailing list:

Distribution Structure

  • README.rst -- This file.
  • NEWS.rst -- Release notes and news.
  • LICENSE.rst -- What you can do with the code.
  • CONTRIB.rst -- An (incomplete) list of people who helped Biopython in
    one way or another.
  • CONTRIBUTING.rst -- An overview about how to contribute to Biopython.
  • DEPRECATED.rst -- Contains information about modules in Biopython that
    were removed or no longer recommended for use, and how to update code that
    uses those modules.
  • -- Configures which files to include in releases.
  • -- Installation file.
  • Bio/ -- The main code base code.
  • BioSQL/ -- Code for using Biopython with BioSQL databases.
  • Doc/ -- Documentation.
  • Scripts/ -- Miscellaneous, possibly useful, standalone scripts.
  • Tests/ -- Regression testing code including sample data files.