Ubuntu running `pip install` gives error 'The following required packages can not be built: * freetype'

93,621

Solution 1

No. pip will not install system-level dependencies. This means pip will not install RPM(s) (Redhat based systems) or DEB(s) (Debian based systems).

To install system dependencies you will need to use one of the following methods depending on your system.

Ubuntu/Debian:

apt-get install libfreetype6-dev

To search for packages on Ubuntu/Debian based systems:

apt-cache search <string>

e.g:

apt-cache search freetype | grep dev

Redhat/CentOS/Fedora:

yum -y install freetype-devel

To search for packages on Redhat/CentOS/Fedora based systems:

yum search <string>

e.g:

yum search freetype | grep devel

Mac OS X: (via Homebrew)

brew install freetype

To search for packages on Mac OS X based systems:

brew search <string>

e.g:

brew search freetype

Solution 2

I had to install libxft-dev in order to enable matplotlib on ubuntu server 14.04.

sudo apt-get install libfreetype6-dev libxft-dev

And then I could use

sudo easy_install matplotlib

Solution 3

A workaround is to do sudo apt-get install pkg-config which I found in this github issue.

Solution 4

None of the existing answers worked for me to upgrade matplotlib on Ubuntu. This is what ultimately work for me:

$ sudo apt-get install build-dep python-matplotlib
$ pip install matplotlib --upgrade

Solution 5

This command will download all dependencies.

For python 2.x

sudo apt-get install python-matplotlib

For python 3.x

sudo apt-get install python3-matplotlib

After installing, you can try

(sudo) pip install matplotlib
Share:
93,621
Athena Wisdom
Author by

Athena Wisdom

Updated on April 22, 2022

Comments

  • Athena Wisdom
    Athena Wisdom about 2 years

    When performing pip install -r requirements.txt, I get the following error during the stage where it is installing matplotlib:

    REQUIRED DEPENDENCIES AND EXTENSIONS
                     numpy: yes [not found. pip may install it below.]
                  dateutil: yes [dateutil was not found. It is required for date
                            axis support. pip/easy_install may attempt to
                            install it after matplotlib.]
                   tornado: yes [tornado was not found. It is required for the
                            WebAgg backend. pip/easy_install may attempt to
                            install it after matplotlib.]
                 pyparsing: yes [pyparsing was not found. It is required for
                            mathtext support. pip/easy_install may attempt to
                            install it after matplotlib.]
                     pycxx: yes [Couldn't import.  Using local copy.]
                    libagg: yes [pkg-config information for 'libagg' could not
                            be found. Using local copy.]
                  freetype: no  [pkg-config information for 'freetype2' could
                            not be found.]
    

    ...

    The following required packages can not be built:
    
                        * freetype
    

    Shouldn't pip install -r requirements.txt also install freetype? How should freetype be installed in Ubuntu 12.04 so it works with matplotlib?

  • James Mills
    James Mills over 10 years
    Sorry it's called freetype2 these days. Updated.
  • Athena Wisdom
    Athena Wisdom over 10 years
    apt-get install freetype2-devel gives the same error too... Could it be apt-get install freetype*? That seems to want to install many other packages
  • James Mills
    James Mills over 10 years
    That will probably work too :) Sorry I believe it's called libfreetype2-devel. I'll updates my answer again :/
  • Dietrich Epp
    Dietrich Epp over 10 years
    I think the -devel convention is for RPM and the -dev convention is for DEB. Try apt-cache search '^libfreetype.*-dev$' which gives libfreetype6-dev.
  • James Mills
    James Mills over 10 years
    @DietrichEpp Thanks :) Bit hard to test without access to Debian/Ubuntu machines :/ Our work only uses RHEL/CentOS :)
  • Dietrich Epp
    Dietrich Epp over 10 years
    You can always use packages.ubuntu.com if you don't have access to a computer running Ubuntu.
  • James Mills
    James Mills over 10 years
    @DietrichEpp Yeah I did but had trouble finding the right package because of the dev vs. devel convention -- Got myself confused :)
  • Nate
    Nate about 10 years
    fwiw, brew install freetype helped me on OSX
  • toom
    toom almost 10 years
    On Ubuntu 12.04 LTS I also needed to install libxft-dev. Thanks for this extra info
  • Timo
    Timo over 9 years
    Why not directly use sudo apt-get install python-matplotlib as recommended here: matplotlib.org/users/installing.html
  • wim
    wim over 9 years
    I already had libfreetype6-dev installed. This helped for me on ubuntu 14.10, thanks!
  • TerminalDilettante
    TerminalDilettante about 9 years
    the libxft-dev thing is what did it for me! thanks!
  • SlimJim
    SlimJim about 9 years
    installing pkg-config was the missing unintuitive step for me as well, this when installing matplotlib in a docker container with ubuntu:14.04 as base-image.
  • Carles Sala
    Carles Sala over 8 years
    Apparently, the real dependency here is pkg-config, which libxft-dev also installs as a dependency. So, the right answer would be to run apt-get install libfreetype6-dev pkg-config
  • lababidi
    lababidi about 8 years
    Mac OS X Users: brew install pkg-config will help pip find freetype
  • Alma
    Alma almost 8 years
    This also fixed it for me as well on a virtualbox VM. Looks like pkg-config is what is needed for virtual machine installations.
  • Tristan
    Tristan almost 8 years
    blt-dev needs apt-get install libfreetype6-dev to run so it is automaticly installed with blt-dev.
  • Hack-R
    Hack-R almost 7 years
    Ubuntu/Debian users also need the package in @Sudipta Basak's answer
  • xorinzor
    xorinzor about 3 years
    on WSL2 I also had to install libxft-dev