web-dev-qa-db-ja.com

cairocffiをpipインストールする方法?

cairocffiからpipをインストールするにはどうすればよいですか?

cairocffiは、PycairoのCFFIベースのドロップイン置換です https://github.com/SimonSapin/cairocffi

Ubuntu 14.04にインストールしようとしています。

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/"

標準のpipコマンドを使用してインストールを試しましたが、次のようになります。

$ 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

権限を手動で確認したところ、書き込みアクセス権限がないことがわかりました。 なぜそうなのですか?そして、なぜSudoが権限を上書きするように機能していないのですか?

$ 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

私がSudo -H pip install cairoffiを試したとき、私は得ました:

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

@MattDMoが示唆したように、私はapt-get install libffiを試しましたが、それでもうまくいきませんでした:

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

しかし、パッケージマネージャーにはlibffiがないため、libffi-devを試しました。

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) ...

libffi-devは正常にインストールされますが、cairoffiはまだインストールされていません。

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
13
alvas

これはエラーメッセージのとおりです。

No package 'libffi' found

libffiおよびlibffi-devは、ディストリビューションのパッケージマネージャー(yumapt-get 、何でも)pipインストールの前に動作します。それらの名前は、プラットフォームによってわずかに異なる場合があります。

14
MattDMo

libffi6 libffi-devがインストールされていても機能しませんでした。最後にそれを使って動作させました:

pip3 install -U pip
pip3 install -U setuptools
pip3 install --no-cache-dir cairocffi

--no-cache-dirは次のおかげでトリックでした: https://github.com/Kozea/cairocffi/issues/125#issuecomment-476295293

9
A T

私にとって、Windows 10ではpython 3.5.3rc1、pip install cairocffiが失敗しました。やっているpip install cffiはそれを成功させるのに十分でした。

8
Don Smith