PyMuPDF should be installed using pip with:

python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf

This will install from a Python wheel if one is available for your platform.

Installation when a suitable wheel is not available

If a suitable Python wheel is not available, pip will automatically build from source using a Python sdist.

This requires C/C++ development tools and SWIG to be installed:

  • On Unix-style systems such as Linux, OpenBSD and FreeBSD, use the system package manager to install SWIG.

    • For example on Debian Linux, do: sudo apt install swig

  • On Windows:

  • On MacOS, install MacPorts using the instructions at:

    • Then install SWIG with: sudo port install swig

    • You may also need: sudo port install swig-python

As of PyMuPDF-1.20.0, the required MuPDF source code is already in the sdist and is automatically built into PyMuPDF.


Wheels are available for Windows (32-bit Intel, 64-bit Intel), Linux (64-bit Intel, 64-bit ARM) and Mac OSX (64-bit Intel, 64-bit ARM), Python versions 3.7 and up.

Wheels are not available for Python installed with Chocolatey on Windows. Instead install Python using the Windows installer from the website, see:

PyMuPDF does not support Python versions prior to 3.7. Older wheels can be found in this repository and on PyPI. Please note that we generally follow the official Python release schedules. For Python versions dropping out of official support this means, that generation of wheels will also be ceased for them.

There are no mandatory external dependencies. However, some optional feature are available only if additional components are installed:

  • Pillow is required for Pixmap.pil_save() and Pixmap.pil_tobytes().

  • fontTools is required for Document.subset_fonts().

  • pymupdf-fonts is a collection of nice fonts to be used for text output methods.

  • Tesseract-OCR for optical character recognition in images and document pages. Tesseract is separate software, not a Python package. To enable OCR functions in PyMuPDF, the software must be installed and the system environment variable "TESSDATA_PREFIX" must be defined and contain the tessdata folder name of the Tesseract installation location. See below.


You can install these additional components at any time – before or after installing PyMuPDF. PyMuPDF will detect their presence during import or when the respective functions are being used.

Install from source without using an sdist

  • First get a PyMuPDF source tree:

  • Install C/C++ development tools and SWIG as described above.

  • Build and install PyMuPDF:

    cd PyMuPDF && python install

    This will automatically download a specific hard-coded MuPDF source release, and build it into PyMuPDF.

    One can build with a non-default MuPDF (for example one installed on the system, or a local checkout) by setting environmental variables. See the comments at the start of PyMuPDF/ for more information.


When running Python scripts that use PyMuPDF, make sure that the current directory is not the PyMuPDF/ directory.

Otherwise, confusingly, Python will attempt to import fitz from the local fitz/ directory, which will fail because it only contains source files.

Running tests

PyMuPDF has a set of pytest scripts within the tests/ directory.

Run tests with:

pip install pytest fontTools
pytest PyMuPDF/tests

If PyMuPDF has been built with a non-default build of MuPDF (using environmental variable PYMUPDF_SETUP_MUPDF_BUILD), it is possible that tests/ will fail, because it relies on MuPDF having been built with PyMuPDF’s customized configuration, fitz/_config.h.

One can skip this particular test by adding -k 'not test_textbox3' to the pytest command line.

Enabling Integrated OCR Support

If you do not intend to use this feature, skip this step. Otherwise, it is required for both installation paths: from wheels and from sources.

PyMuPDF will already contain all the logic to support OCR functions. But it additionally does need Tesseract’s language support data, so installation of Tesseract-OCR is still required.

The language support folder location must currently 1 be communicated via storing it in the environment variable "TESSDATA_PREFIX".

So for a working OCR functionality, make sure to complete this checklist:

  1. Install Tesseract.

  2. Locate Tesseract’s language support folder. Typically you will find it here:
    • Windows: C:\Program Files\Tesseract-OCR\tessdata

    • Unix systems: /usr/share/tesseract-ocr/4.00/tessdata

  3. Set the environment variable TESSDATA_PREFIX
    • Windows: set TESSDATA_PREFIX=C:\Program Files\Tesseract-OCR\tessdata

    • Unix systems: export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata


This must happen outside Python – before starting your script. Just manipulating os.environ will not work!



In the next MuPDF version, it will be possible to pass this value as a parameter – directly in the OCR invocations.

Discord logo