no module named cairo - python and pip

20,270

Pycairo is a Python bindings for the cairo graphics library. Pycairo doesn't provide precompiled binary wheels so pip has to compile it from sources. And to compile Pycairo you need cairo installed. So start with

apt install libcairo2

Or install the binding form your distribution:

apt install python-cairo
Share:
20,270
Harry
Author by

Harry

Updated on July 19, 2022

Comments

  • Harry
    Harry almost 2 years

    I am trying to build openuds and I get the error no module name cairo, I surfed a bit and found installing pycairo will solve it. 1) How do I fix this install error?

    python manage.py createcachetable
    Traceback (most recent call last):
      File "manage.py", line 9, in <module>
        execute_from_command_line(sys.argv)
      File "/home/hari/openuds/testuds-master/Python-2.7.14/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
        utility.execute()
      File "/home/hari/openuds/testuds-master/Python-2.7.14/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute
        django.setup()
      File "/home/hari/openuds/testuds-master/Python-2.7.14/env/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/home/hari/openuds/testuds-master/Python-2.7.14/env/lib/python2.7/site-packages/django/apps/registry.py", line 115, in populate
        app_config.ready()
      File "/home/hari/openuds/testuds-master/server/src/uds/__init__.py", line 78, in ready
        from . import REST  # To make sure REST initializes all what it needs
      File "/home/hari/openuds/testuds-master/server/src/uds/REST/__init__.py", line 210, in <module>
        Dispatcher.initialize()
      File "/home/hari/openuds/testuds-master/server/src/uds/REST/__init__.py", line 206, in initialize
        __import__(__name__ + '.' + package + '.' + name, globals(), locals(), [], -1)
      File "/home/hari/openuds/testuds-master/server/src/uds/REST/methods/reports.py", line 38, in <module>
        from uds import reports
      File "/home/hari/openuds/testuds-master/server/src/uds/reports/__init__.py", line 80, in <module>
        __init__()
      File "/home/hari/openuds/testuds-master/server/src/uds/reports/__init__.py", line 76, in __init__
        __import__(name, globals(), locals(), [])
      File "/home/hari/openuds/testuds-master/server/src/uds/reports/stats/__init__.py", line 35, in <module>
        from .login import StatsReportLogin, StatsReportLoginCSV
      File "/home/hari/openuds/testuds-master/server/src/uds/reports/stats/login.py", line 45, in <module>
        import cairo
    ImportError: No module named cairo
    

    so I tried to install pycairo and I get the following error, Could someone help me, please

    python -m pip install pycairo 
    Collecting pycairo
      Using cached https://files.pythonhosted.org/packages/a6/54/23d6cf3e8d8f1eb30e0e58f171b6f62b2ea75c024935492373639a1a08e4/pycairo-1.18.0.tar.gz
    Building wheels for collected packages: pycairo
      Running setup.py bdist_wheel for pycairo ... error
      Complete output from command /home/hari/openuds/testuds-master/Python-2.7.14/env/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-_hOJAx/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-sp61DQ --python-tag cp27:
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-2.7
      creating build/lib.linux-x86_64-2.7/cairo
      copying cairo/__init__.py -> build/lib.linux-x86_64-2.7/cairo
      copying cairo/__init__.pyi -> build/lib.linux-x86_64-2.7/cairo
      copying cairo/py.typed -> build/lib.linux-x86_64-2.7/cairo
      running build_ext
      Package cairo was not found in the pkg-config search path.
      Perhaps you should add the directory containing `cairo.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'cairo' found
      Command '['pkg-config', '--print-errors', '--exists', 'cairo >= 1.13.1']' returned non-zero exit status 1
    
      ----------------------------------------
      Failed building wheel for pycairo
      Running setup.py clean for pycairo
    Failed to build pycairo
    Installing collected packages: pycairo
      Running setup.py install for pycairo ... error
        Complete output from command /home/hari/openuds/testuds-master/Python-2.7.14/env/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-_hOJAx/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-SBY9Xo/install-record.txt --single-version-externally-managed --compile --install-headers /home/hari/openuds/testuds-master/Python-2.7.14/env/include/site/python2.7/pycairo:
        running install
        running build
        running build_py
        creating build
        creating build/lib.linux-x86_64-2.7
        creating build/lib.linux-x86_64-2.7/cairo
        copying cairo/__init__.py -> build/lib.linux-x86_64-2.7/cairo
        copying cairo/__init__.pyi -> build/lib.linux-x86_64-2.7/cairo
        copying cairo/py.typed -> build/lib.linux-x86_64-2.7/cairo
        running build_ext
        Package cairo was not found in the pkg-config search path.
        Perhaps you should add the directory containing `cairo.pc'
        to the PKG_CONFIG_PATH environment variable
        No package 'cairo' found
        Command '['pkg-config', '--print-errors', '--exists', 'cairo >= 1.13.1']' returned non-zero exit status 1
    
        ----------------------------------------
    Command "/home/hari/openuds/testuds-master/Python-2.7.14/env/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-_hOJAx/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-SBY9Xo/install-record.txt --single-version-externally-managed --compile --install-headers /home/hari/openuds/testuds-master/Python-2.7.14/env/include/site/python2.7/pycairo" failed with error code 1 in /tmp/pip-install-_hOJAx/pycairo/
    

    2) Also in Java we have maven which will install the dependencies by its own like this any other tool is available for building python packages?

  • peter_v
    peter_v about 4 years
    Also see more detailed solution at github.com/pygobject/pycairo/issues/89
  • Eldamir
    Eldamir almost 3 years
    needed libcairo2-dev for it to work for me