title: How to pip install cairocffi?
body: <p><strong>How do I install <code>cairocffi</code> through <code>pip</code>?</strong></p>
  
  <p><code>cairocffi</code> is a CFFI-based drop-in replacement for <code>Pycairo</code> <a href="https://github.com/SimonSapin/cairocffi" rel="noreferrer">https://github.com/SimonSapin/cairocffi</a>. </p>
  
  <p>I'm trying to install it on Ubuntu 14.04:</p>
  
  <pre><code>alvas@ubi:~$ cat /etc/*-release
  DISTRIB_ID=Ubuntu
  DISTRIB_RELEASE=14.04
  DISTRIB_CODENAME=trusty
  DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"
  NAME="Ubuntu"
  VERSION="14.04.2 LTS, Trusty Tahr"
  ID=ubuntu
  ID_LIKE=debian
  PRETTY_NAME="Ubuntu 14.04.2 LTS"
  VERSION_ID="14.04"
  HOME_URL="http://www.ubuntu.com/"
  SUPPORT_URL="http://help.ubuntu.com/"
  BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
  </code></pre>
  
  <p>I've tried installing with the standard pip command but I get this:</p>
  
  <pre><code>$ sudo pip install cairocffi
  The directory '/home/alvas/.cache/pip/log' or its parent directory is not owned by the current user and the debug log has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  The directory '/home/alvas/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  The directory '/home/alvas/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  Collecting cairocffi
    Downloading cairocffi-0.6.tar.gz (75kB)
      100% |████████████████████████████████| 77kB 34kB/s 
  Collecting cffi&gt;=0.6 (from cairocffi)
    Downloading cffi-0.9.2.tar.gz (209kB)
      100% |████████████████████████████████| 212kB 97kB/s 
  Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python3.4/dist-packages (from cffi&gt;=0.6-&gt;cairocffi)
  Installing collected packages: cffi, cairocffi
    Running setup.py install for cffi
      Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-d3kjzf__/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ll323a3c-record/install-record.txt --single-version-externally-managed --compile:
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.4
      creating build/lib.linux-x86_64-3.4/cffi
      copying cffi/commontypes.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/lock.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/api.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/verifier.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/__init__.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/cparser.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/backend_ctypes.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/vengine_gen.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/gc_weakref.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/ffiplatform.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/model.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/vengine_cpy.py -&gt; build/lib.linux-x86_64-3.4/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-x86_64-3.4
      creating build/temp.linux-x86_64-3.4/c
      x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -DUSE__THREAD -I/usr/include/ffi -I/usr/include/libffi -I/usr/include/python3.4m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.4/c/_cffi_backend.o
      c/_cffi_backend.c:13:17: fatal error: ffi.h: No such file or directory
       #include &lt;ffi.h&gt;
                       ^
      compilation terminated.
      error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
      ----------------------------------------
      Command "/usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-d3kjzf__/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ll323a3c-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-d3kjzf__/cffi
  </code></pre>
  
  <p>I've manually checked the permission and I realized that there's no write access permission. <strong>Why is that so? And why isn't sudo working to overwrite the permission?</strong></p>
  
  <pre><code>$ ls -la .cache/pip/log/
  total 60
  drwxrwxr-x 2 alvas alvas  4096 Feb  3 10:51 .
  drwx------ 4 alvas alvas  4096 Apr 12 23:16 ..
  -rw-rw-r-- 1 alvas alvas 49961 Apr 12 23:18 debug.log
  </code></pre>
  
  <p>When I tried <code>sudo -H pip install cairoffi</code>, I got:</p>
  
  <pre><code>sudo -H pip install cairocffi
  Collecting cairocffi
    Using cached cairocffi-0.6.tar.gz
  Collecting cffi&gt;=0.6 (from cairocffi)
    Downloading cffi-0.9.2.tar.gz (209kB)
      100% |████████████████████████████████| 212kB 29kB/s 
  Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python3.4/dist-packages (from cffi&gt;=0.6-&gt;cairocffi)
  Installing collected packages: cffi, cairocffi
    Running setup.py install for cffi
      Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-2sv6pbsp/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-xk4kkjrj-record/install-record.txt --single-version-externally-managed --compile:
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'libffi' found
      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.4
      creating build/lib.linux-x86_64-3.4/cffi
      copying cffi/commontypes.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/lock.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/api.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/verifier.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/__init__.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/cparser.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/backend_ctypes.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/vengine_gen.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/gc_weakref.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/ffiplatform.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/model.py -&gt; build/lib.linux-x86_64-3.4/cffi
      copying cffi/vengine_cpy.py -&gt; build/lib.linux-x86_64-3.4/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-x86_64-3.4
      creating build/temp.linux-x86_64-3.4/c
      x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -DUSE__THREAD -I/usr/include/ffi -I/usr/include/libffi -I/usr/include/python3.4m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.4/c/_cffi_backend.o
      c/_cffi_backend.c:13:17: fatal error: ffi.h: No such file or directory
       #include &lt;ffi.h&gt;
                       ^
      compilation terminated.
      error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
      ----------------------------------------
      Command "/usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-2sv6pbsp/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-xk4kkjrj-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-2sv6pbsp/cffi
  </code></pre>
  
  <p>As @MattDMo suggested, i've tried <code>apt-get install libffi</code> but it still didn't work out:</p>
  
  <pre><code>alvas@ubi:~$ sudo apt-get install libffi libffi-dev
  Reading package lists... Done
  Building dependency tree       
  Reading state information... Done
  E: Unable to locate package libffi
  </code></pre>
  
  <p>But there isn't any <code>libffi</code> on the package manager, so i've tried <code>libffi-dev</code>:</p>
  
  <pre><code>alvas@ubi:~$ sudo apt-get install libffi-dev
  Reading package lists... Done
  Building dependency tree       
  Reading state information... Done
  The following NEW packages will be installed:
    libffi-dev
  0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
  Need to get 99.8 kB of archives.
  After this operation, 323 kB of additional disk space will be used.
  Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main libffi-dev amd64 3.1~rc1+r3.0.13-12 [99.8 kB]
  Fetched 99.8 kB in 1s (76.3 kB/s)     
  Selecting previously unselected package libffi-dev:amd64.
  (Reading database ... 492855 files and directories currently installed.)
  Preparing to unpack .../libffi-dev_3.1~rc1+r3.0.13-12_amd64.deb ...
  Unpacking libffi-dev:amd64 (3.1~rc1+r3.0.13-12) ...
  Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
  Processing triggers for doc-base (0.10.5) ...
  Processing 1 added doc-base file...
  Processing triggers for install-info (5.2.0.dfsg.1-2) ...
  Setting up libffi-dev:amd64 (3.1~rc1+r3.0.13-12) ...
  </code></pre>
  
  <p>It installs <code>libffi-dev</code> successfully but <code>cairoffi</code> is still not installing:</p>
  
  <pre><code>alvas@ubi:~$ sudo -H pip install cairoffi
  Collecting cairoffi
    Could not find a version that satisfies the requirement cairoffi (from versions: )
    No matching distribution found for cairoffi
  alvas@ubi:~$ sudo -H pip3 install cairoffi
  Collecting cairoffi
    Could not find a version that satisfies the requirement cairoffi (from versions: )
    No matching distribution found for cairoffi
  </code></pre>