Kozea / cairocffi

CFFI-based cairo bindings for Python.

Home Page:https://doc.courtbouillon.org/cairocffi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to install cairocffi 1.2.0 using python:3.8-alpine docker image

wla80 opened this issue · comments

It seems some python or pip version upgrades in python:3.8-alpine https://github.com/docker-library/python/commits/master/3.8/buster since March causes this issue.

Installing initially failed dependencies...
[InstallError]:   File "/usr/local/lib/python3.8/site-packages/pipenv/cli/command.py", line 233, in install
[InstallError]:       retcode = do_install(
[InstallError]:   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py", line 2052, in do_install
[InstallError]:       do_init(
[InstallError]:   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py", line 1304, in do_init
[InstallError]:       do_install_dependencies(
[InstallError]:   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py", line 899, in do_install_dependencies
[InstallError]:       batch_install(
[InstallError]:   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py", line 796, in batch_install
[InstallError]:       _cleanup_procs(procs, failed_deps_queue, retry=retry)
[InstallError]:   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py", line 703, in _cleanup_procs
[InstallError]:       raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: Looking in indexes: https://pypi.python.org/simple
[pipenv.exceptions.InstallError]: Collecting cairocffi==1.2.0
[pipenv.exceptions.InstallError]:   Using cached cairocffi-1.2.0.tar.gz (70 kB)
[pipenv.exceptions.InstallError]:     ERROR: Command errored out with exit status 1:
[pipenv.exceptions.InstallError]:      command: /home/farm/.local/share/virtualenvs/app-lp47FrbD/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5jkjbm85/cairocffi_04d801ba60bf4502b237be3b05ff8683/setup.py'"'"'; __file__='"'"'/tmp/pip-install-5jkjbm85/cairocffi_04d801ba60bf4502b237be3b05ff8683/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-vb2kfoye
[pipenv.exceptions.InstallError]:          cwd: /tmp/pip-install-5jkjbm85/cairocffi_04d801ba60bf4502b237be3b05ff8683/
[pipenv.exceptions.InstallError]:     Complete output (75 lines):
[pipenv.exceptions.InstallError]:       ERROR: Command errored out with exit status 1:
[pipenv.exceptions.InstallError]:        command: /home/farm/.local/share/virtualenvs/app-lp47FrbD/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-wheel-5q61v9kx/cffi_484c1e8212db421ba672e0cf1f03f7d2/setup.py'"'"'; __file__='"'"'/tmp/pip-wheel-5q61v9kx/cffi_484c1e8212db421ba672e0cf1f03f7d2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-mg75y1sy
[pipenv.exceptions.InstallError]:            cwd: /tmp/pip-wheel-5q61v9kx/cffi_484c1e8212db421ba672e0cf1f03f7d2/
[pipenv.exceptions.InstallError]:       Complete output (38 lines):
[pipenv.exceptions.InstallError]:       running bdist_wheel
[pipenv.exceptions.InstallError]:       running build
[pipenv.exceptions.InstallError]:       running build_py
[pipenv.exceptions.InstallError]:       creating build
[pipenv.exceptions.InstallError]:       creating build/lib.linux-x86_64-3.9
[pipenv.exceptions.InstallError]:       creating build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/api.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/lock.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/error.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/cparser.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/verifier.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/recompiler.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/commontypes.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/__init__.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/model.py -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/_embedding.h -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.9/cffi
[pipenv.exceptions.InstallError]:       warning: build_py: byte-compiling is disabled, skipping.
[pipenv.exceptions.InstallError]:     
[pipenv.exceptions.InstallError]:       running build_ext
[pipenv.exceptions.InstallError]:       building '_cffi_backend' extension
[pipenv.exceptions.InstallError]:       creating build/temp.linux-x86_64-3.9
[pipenv.exceptions.InstallError]:       creating build/temp.linux-x86_64-3.9/c
[pipenv.exceptions.InstallError]:       gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/home/farm/.local/share/virtualenvs/app-lp47FrbD/include -I/usr/include/python3.9 -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.9/c/_cffi_backend.o
[pipenv.exceptions.InstallError]:       c/_cffi_backend.c:2:10: fatal error: Python.h: No such file or directory
[pipenv.exceptions.InstallError]:           2 | #include <Python.h>
[pipenv.exceptions.InstallError]:             |          ^~~~~~~~~~
[pipenv.exceptions.InstallError]:       compilation terminated.
[pipenv.exceptions.InstallError]:       error: command '/usr/bin/gcc' failed with exit code 1
[pipenv.exceptions.InstallError]:       ----------------------------------------
[pipenv.exceptions.InstallError]:       ERROR: Failed building wheel for cffi
[pipenv.exceptions.InstallError]:     ERROR: Failed to build one or more wheels
[pipenv.exceptions.InstallError]:     Traceback (most recent call last):
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/setuptools/installer.py", line 75, in fetch_build_egg
[pipenv.exceptions.InstallError]:         subprocess.check_call(cmd)
[pipenv.exceptions.InstallError]:       File "/usr/lib/python3.9/subprocess.py", line 373, in check_call
[pipenv.exceptions.InstallError]:         raise CalledProcessError(retcode, cmd)
[pipenv.exceptions.InstallError]:     subprocess.CalledProcessError: Command '['/home/farm/.local/share/virtualenvs/app-lp47FrbD/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpzddefd3c', '--quiet', 'cffi>=1.1.0']' returned non-zero exit status 1.
[pipenv.exceptions.InstallError]:     
[pipenv.exceptions.InstallError]:     The above exception was the direct cause of the following exception:
[pipenv.exceptions.InstallError]:     
[pipenv.exceptions.InstallError]:     Traceback (most recent call last):
[pipenv.exceptions.InstallError]:       File "<string>", line 1, in <module>
[pipenv.exceptions.InstallError]:       File "/tmp/pip-install-5jkjbm85/cairocffi_04d801ba60bf4502b237be3b05ff8683/setup.py", line 10, in <module>
[pipenv.exceptions.InstallError]:         setup(
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/setuptools/__init__.py", line 152, in setup
[pipenv.exceptions.InstallError]:         _install_setup_requires(attrs)
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/setuptools/__init__.py", line 147, in _install_setup_requires
[pipenv.exceptions.InstallError]:         dist.fetch_build_eggs(dist.setup_requires)
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/setuptools/dist.py", line 779, in fetch_build_eggs
[pipenv.exceptions.InstallError]:         resolved_dists = pkg_resources.working_set.resolve(
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/pkg_resources/__init__.py", line 766, in resolve
[pipenv.exceptions.InstallError]:         dist = best[req.key] = env.best_match(
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/pkg_resources/__init__.py", line 1051, in best_match
[pipenv.exceptions.InstallError]:         return self.obtain(req, installer)
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/pkg_resources/__init__.py", line 1063, in obtain
[pipenv.exceptions.InstallError]:         return installer(requirement)
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/setuptools/dist.py", line 838, in fetch_build_egg
[pipenv.exceptions.InstallError]:         return fetch_build_egg(self, req)
[pipenv.exceptions.InstallError]:       File "/home/farm/.local/share/virtualenvs/app-lp47FrbD/lib/python3.9/site-packages/setuptools/installer.py", line 77, in fetch_build_egg
[pipenv.exceptions.InstallError]:         raise DistutilsError(str(e)) from e
[pipenv.exceptions.InstallError]:     distutils.errors.DistutilsError: Command '['/home/farm/.local/share/virtualenvs/app-lp47FrbD/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpzddefd3c', '--quiet', 'cffi>=1.1.0']' returned non-zero exit status 1.
[pipenv.exceptions.InstallError]:     ----------------------------------------
[pipenv.exceptions.InstallError]: WARNING: Discarding https://files.pythonhosted.org/packages/84/ca/0bffed5116d21251469df200448667e90acaa5131edea869b44a3fbc73d0/cairocffi-1.2.0.tar.gz#sha256=9a979b500c64c8179fec286f337e8fe644eca2f2cd05860ce0b62d25f22ea140 (from https://pypi.org/simple/cairocffi/) (requires-python:>=3.6). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
[pipenv.exceptions.InstallError]: ERROR: Could not find a version that satisfies the requirement cairocffi==1.2.0 (from versions: 0.1, 0.2, 0.3, 0.3.1, 0.3.2, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.5, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.6, 0.7, 0.7.1, 0.7.2, 0.8.0, 0.8.1, 0.9.0, 1.0.0rc1, 1.0.0, 1.0.1, 1.0.2, 1.1.0, 1.2.0)
[pipenv.exceptions.InstallError]: ERROR: No matching distribution found for cairocffi==1.2.0
ERROR: Couldn't install package: cairocffi

The current workaround for my team is to use an older version of the image: python:3.8.7-alpine

Hello!

First of all, your trace includes both /usr/local/lib/python3.8/ and /usr/lib/python3.9/ paths, that’s a bit strange.

The error you have is:

c/_cffi_backend.c:2:10: fatal error: Python.h: No such file or directory

It happens during the installation of the cffi package, a dependency of cairocffi. It probably means that you have to:

  • install the cffi package proposed by your distribution (instead of installing and compiling it, as you do here), or
  • install the python-dev package proposed by your distribution, that includes Python.h and that’s needed to compile cffi (among other things, as explained in cffi’s documentation).

Feel free to reopen if needed.