Ubuntu Installation Experience - pymupdf/PyMuPDF GitHub Wiki
Since PyMuPDF-1.20.0 (released 2022-06-17), there is no need to manually download and build MuPDF when building PyMuPDF.
- Building PyMuPDF is the same on all systems, for example pip install pymupdf or ./setup.py install.
- For details, please see: https://pymupdf.readthedocs.io/en/latest/installation.html
MuPDF 1.18.0, PyMuPDF 1.18.14
This is a list of steps that should lead to a successfully installed PyMuPDF.
- Get the MuPDF source from the site
wget https://mupdf.com/downloads/archive/mupdf-1.14.0-source.tar.gz
and decompress it (latest version as of writing. Others available here: https://mupdf.com/downloads/archive/). - MuPDF also has a repository on GitHub. This, however, is the latest development version! Do not use it: it is probably not be compatible with the current PyMuPDF.
- Set environment variables:
export CFLAGS="-fPIC"
(on CentOS 5,export CFLAGS="-fPIC -std=gnu99"
to resolve errors about missing a definition forNAN
symbol in thethirdparty/mujs
folder). If you do not set the CFLAG -fPIC, you may also run into a linking error when you run setup.py. - Run the initial make:
sudo make HAVE_X11=no HAVE_GLFW=no HAVE_GLUT=no prefix=/usr/local
- If no issues occur install:
sudo make HAVE_X11=no HAVE_GLFW=no HAVE_GLUT=no prefix=/usr/local install
- You may need to pass in XCFLAGS during the make process if
python setup.py build
fails to link the binaries (this step is below). - If you do get a linking issue, try this installation command instead:
make HAVE_X11=no HAVE_GLUT=no XCFLAGS="-fPIC" prefix=/usr/local install
- Remember, you may need to use sudo for installation, as it writes the mupdf executable to /usr/local, which usually require root access to read/write from. If you don't the previous make commands may fail.
- Get the corresponding version of
PyMuPDF
:git clone -b <correct branch> https://github.com/rk700/PyMuPDF.git
(<correct branch> should matchmutool
version). - Edit the
setup.py
to point to the correct directories as indicated by the prefix used when making.
Here is the resp. code snippet:
... include_dirs=['/usr/local/include/mupdf', # we need the path of the MuPDF and zlib$ '/usr/local/thirdparty/zlib', # '/usr/include/mupdf', ], library_dirs=['/usr/local/lib'], libraries=['mupdf', #'crypto', #openssl is required by mupdf on archlinux #'jbig2dec', 'openjp2', 'jpeg', 'freetype', 'mupdf-third', # the '-' is new in v1.14.0 ], # the libraries to link with ...
(Comment unnecessary libraries out)
- Run
python setup.py build
If no exception is thrown install either with python setup.py install
or pip install
.
The following worked for me on Ubuntu 18.04.3 LTS, after having no luck with the above.
sudo apt install python3-pip
sudo -H pip3 install --upgrade pip
sudo -H python3.6 -m pip install -U pymupdf