no module named cairo – python and pip

Question:

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('rn', '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('rn', '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('rn', '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?

Asked By: Harry

||

Answers:

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
Answered By: phd

If you recently updated python versions, you could link the missing .so files.

E.g.

sudo ln -s /usr/lib/python3/dist-packages/cairo/_cairo.cpython-310-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cairo/_cairo.cpython-311-x86_64-linux-gnu.so

If other libraries are complaining about being missing, then look at the relevant modules, e.g. cairo in /usr/lib/python3/dist-packages/cairo/

Answered By: sunapi386
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.