2015-04-13 15 views
9

Wie installiere ich cairocffi bis pip?Wie installiere ich cairocffi?

cairocffi ist ein CFFI-basierter Drop-in-Ersatz für Pycairohttps://github.com/SimonSapin/cairocffi.

Ich versuche es auf Ubuntu zu installieren 14.04:

[email protected]:~$ 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/" 

Ich habe versucht, mit dem Standard-pip Befehl Installation, aber ich bekomme diese:

$ 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>=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>=0.6->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 -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/lock.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/api.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/verifier.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/__init__.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/cparser.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/gc_weakref.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/model.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/vengine_cpy.py -> 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 <ffi.h> 
        ^
    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 

ich manuell die überprüft haben Erlaubnis und ich erkannte, dass es keine Schreibzugriffsberechtigung gibt. Warum ist das so? Und warum funktioniert Sudo nicht, um die Erlaubnis zu überschreiben?

$ 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 

Als ich sudo -H pip install cairoffi versucht, ich habe:

sudo -H pip install cairocffi 
Collecting cairocffi 
    Using cached cairocffi-0.6.tar.gz 
Collecting cffi>=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>=0.6->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 -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/lock.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/api.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/verifier.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/__init__.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/cparser.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/gc_weakref.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/model.py -> build/lib.linux-x86_64-3.4/cffi 
    copying cffi/vengine_cpy.py -> 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 <ffi.h> 
        ^
    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 

Als @MattDMo vorgeschlagen, ich habe apt-get install libffi versucht, aber es hat immer noch nicht funktioniert:

[email protected]:~$ sudo apt-get install libffi libffi-dev 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
E: Unable to locate package libffi 

Aber Es gibt keine libffi auf dem Paket-Manager, also habe ich versucht libffi-dev:

[email protected]:~$ 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) ... 

Es installiert libffi-dev erfolgreich aber cairoffi ist die Installation noch nicht:

[email protected]:~$ 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 
[email protected]:~$ 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 
+0

Wie gesagt, Sie müssen den Paketmanager Ihrer Linux Distribution ('yum',' apt-get', was auch immer) verwenden, um die Systempakete 'libffi' und' libffi-dev' zu installieren. Entschuldigung, wenn das nicht ganz klar war. – MattDMo

+0

Wenn Sie das nächste Mal ein Problem oder eine Frage zu einer Antwort haben, können Sie unter der Antwort einen Kommentar abgeben, anstatt nur Ihre Frage zu bearbeiten, auch wenn es nur auf die Bearbeitung verweist. Ich habe das nur gesehen, weil ich versehentlich den Tab offen gelassen habe. Das Kommentieren sendet eine Benachrichtigung an den Autor und jeden, den Sie "@" erwähnen können. – MattDMo

Antwort

13

Es ist direkt in der Fehlermeldung:

No package 'libffi' found 

Sie werden libffi und libffi-dev installieren müssen über den Paketmanager Ihrer Distribution (yum, apt-get, was auch immer), bevor die pip Installation funktioniert. Ihre Namen können von Plattform zu Plattform sehr leicht variieren.

+0

@alvas Welche Distribution und Version verwenden Sie? – MattDMo

+0

es ist ubuntu 14.04 – alvas

+7

Auf Ubuntu sind die Pakete ['libffi6'] (http://packages.ubuntu.com/trusty/libffi6) und [' libffi-dev'] (http://packages.ubuntu.com/trusty)/libffi-dev). Running 'sudo apt-get installieren libffi6 libffi-dev' sollte gut funktionieren ... – MattDMo

5

Für mich, unter Windows 10 mit Python 3.5.3rc1, pip install cairocffi war fehlgeschlagen. Doing pip install cffi war ausreichend, um erfolgreich zu sein.

+1

Vielen Dank! – Nonsingular