Docker-compose no longer building image (AttributeError: cython_sources)

I am building a django-react site and suddenly my docker-compose no longer builds despite any changes to requirements or image versions.

My requirements.txt looks as follows:

Django>=3.2.4,<4.0 djangorestframework>=3.12.4,<3.14.0 djangorestframework-simplejwt>=4.8.0,<5.3.0 psycopg2>=2.8.6,<2.9 drf-spectacular>=0.15.1,<0.30 django-allauth>0.5,<1.0 dj-rest-auth>=3.0,<4.0 

The error output:

 => [backend internal] load .dockerignore 0.0s => => transferring context: 234B 0.0s => [backend internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 933B 0.0s => [backend internal] load metadata for 0.5s => [backend 1/6] FROM 0.0s => [backend internal] load build context 0.0s => => transferring context: 2.53kB 0.0s => CACHED [backend 2/6] WORKDIR /app/backend 0.0s => CACHED [backend 3/6] COPY ./requirements.txt /tmp/requirements.txt 0.0s => CACHED [backend 4/6] COPY ./requirements.dev.txt /tmp/requirements.dev.txt 0.0s => CACHED [backend 5/6] COPY . /app/backend 0.0s => ERROR [backend 6/6] RUN python -m venv /py && /py/bin/pip install --upgrade pip && apk add --update --no-cache postgresql-client jpeg-dev && apk add --update --no-cache --virtual .tmp- 18.9s ------ > [backend 6/6] RUN python -m venv /py && /py/bin/pip install --upgrade pip && apk add --update --no-cache postgresql-client jpeg-dev && apk add --update --no-cache --virtual .tmp-build-deps build-base postgresql-dev musl-dev zlib zlib-dev && /py/bin/pip install -r /tmp/requirements.txt && if [ true = "true" ]; then /py/bin/pip install -r /tmp/requirements.dev.txt ; fi && rm -rf /tmp && apk del .tmp-build-deps && adduser --disabled-password --no-create-home django-user: 2.951 Requirement already satisfied: pip in /py/lib/python3.9/site-packages (21.2.4) 3.090 Collecting pip 3.202 Downloading pip-23.2-py3-none-any.whl (2.1 MB) 3.389 Installing collected packages: pip 3.389 Attempting uninstall: pip 3.389 Found existing installation: pip 21.2.4 3.454 Uninstalling pip-21.2.4: 3.458 Successfully uninstalled pip-21.2.4 4.339 Successfully installed pip-23.2 4.506 fetch 4.832 fetch 5.062 (1/9) Installing libjpeg-turbo (2.1.0-r0) 5.092 (2/9) Installing pkgconf (1.7.3-r0) 5.116 (3/9) Installing libjpeg-turbo-dev (2.1.0-r0) 5.137 (4/9) Installing jpeg-dev (9d-r1) 5.156 (5/9) Installing libedit (20191231.3.1-r1) 5.179 (6/9) Installing libsasl (2.1.28-r0) 5.204 (7/9) Installing libldap (2.4.57-r1) 5.263 (8/9) Installing libpq (13.11-r0) 5.287 (9/9) Installing postgresql-client (13.11-r0) 5.358 Executing busybox-1.32.1-r7.trigger 5.362 OK: 20 MiB in 45 packages 5.383 fetch 5.520 fetch 5.644 (1/37) Upgrading musl (1.2.2-r1 -> 1.2.2-r2) 5.676 (2/37) Upgrading libcrypto1.1 (1.1.1l-r0 -> 1.1.1s-r0) 5.755 (3/37) Upgrading libssl1.1 (1.1.1l-r0 -> 1.1.1s-r0) 5.806 (4/37) Upgrading zlib (1.2.11-r3 -> 1.2.12-r3) 5.830 (5/37) Installing libgcc (10.2.1_pre1-r3) 5.860 (6/37) Installing libstdc++ (10.2.1_pre1-r3) 5.923 (7/37) Installing binutils (2.35.2-r1) 6.069 (8/37) Installing libmagic (5.39-r0) 6.137 (9/37) Installing file (5.39-r0) 6.156 (10/37) Installing libgomp (10.2.1_pre1-r3) 6.191 (11/37) Installing libatomic (10.2.1_pre1-r3) 6.208 (12/37) Installing libgphobos (10.2.1_pre1-r3) 6.307 (13/37) Installing gmp (6.2.1-r1) 6.342 (14/37) Installing isl22 (0.22-r0) 6.403 (15/37) Installing mpfr4 (4.1.0-r0) 6.501 (16/37) Installing mpc1 (1.2.0-r0) 6.528 (17/37) Installing gcc (10.2.1_pre1-r3) 7.430 (18/37) Installing musl-dev (1.2.2-r2) 7.544 (19/37) Installing libc-dev (0.7.2-r3) 7.574 (20/37) Installing g++ (10.2.1_pre1-r3) 8.135 (21/37) Installing make (4.3-r0) 8.157 (22/37) Installing fortify-headers (1.1-r0) 8.177 (23/37) Installing patch (2.7.6-r7) 8.209 (24/37) Installing build-base (0.5-r3) 8.229 (25/37) Installing libxml2 (2.9.14-r2) 8.293 (26/37) Installing llvm10-libs (10.0.1-r1) 8.719 (27/37) Installing clang-libs (10.0.1-r0) 9.345 (28/37) Installing clang (10.0.1-r0) 9.587 (29/37) Installing llvm10 (10.0.1-r1) 9.695 (30/37) Installing openssl-dev (1.1.1s-r0) 9.724 (31/37) Installing icu-libs (67.1-r2) 9.985 (32/37) Installing icu (67.1-r2) 10.01 (33/37) Installing icu-dev (67.1-r2) 10.07 (34/37) Installing postgresql-libs (13.11-r0) 10.10 (35/37) Installing postgresql-dev (13.11-r0) 10.22 (36/37) Installing zlib-dev (1.2.12-r3) 10.25 (37/37) Installing .tmp-build-deps (20230717.214226) 10.25 Executing busybox-1.32.1-r7.trigger 10.25 Executing ca-certificates-20191127-r5.trigger 10.31 OK: 414 MiB in 78 packages 10.78 Collecting Django<4.0,>=3.2.4 (from -r /tmp/requirements.txt (line 1)) 10.78 Obtaining dependency information for Django<4.0,>=3.2.4 from 10.84 Downloading Django-3.2.20-py3-none-any.whl.metadata (4.1 kB) 10.91 Collecting djangorestframework<3.14.0,>=3.12.4 (from -r /tmp/requirements.txt (line 2)) 10.93 Downloading djangorestframework-3.13.1-py3-none-any.whl (958 kB) 11.04 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 958.3/958.3 kB 9.6 MB/s eta 0:00:00 11.07 Collecting djangorestframework-simplejwt<5.3.0,>=4.8.0 (from -r /tmp/requirements.txt (line 3)) 11.09 Downloading djangorestframework_simplejwt-5.2.2-py3-none-any.whl (85 kB) 11.11 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.4/85.4 kB 7.8 MB/s eta 0:00:00 11.17 Collecting psycopg2<2.9,>=2.8.6 (from -r /tmp/requirements.txt (line 4)) 11.19 Downloading psycopg2-2.8.6.tar.gz (383 kB) 11.21 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 383.8/383.8 kB 30.7 MB/s eta 0:00:00 11.24 Installing build dependencies: started 12.43 Installing build dependencies: finished with status 'done' 12.43 Getting requirements to build wheel: started 12.57 Getting requirements to build wheel: finished with status 'done' 12.57 Preparing metadata (pyproject.toml): started 12.69 Preparing metadata (pyproject.toml): finished with status 'done' 12.74 Collecting drf-spectacular<0.30,>=0.15.1 (from -r /tmp/requirements.txt (line 5)) 12.74 Obtaining dependency information for drf-spectacular<0.30,>=0.15.1 from 12.76 Downloading drf_spectacular-0.26.3-py3-none-any.whl.metadata (13 kB) 12.79 Collecting django-allauth<1.0,>0.5 (from -r /tmp/requirements.txt (line 6)) 12.81 Downloading django-allauth-0.54.0.tar.gz (737 kB) 12.85 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 737.1/737.1 kB 18.6 MB/s eta 0:00:00 13.04 Installing build dependencies: started 14.05 Installing build dependencies: finished with status 'done' 14.05 Getting requirements to build wheel: started 14.24 Getting requirements to build wheel: finished with status 'done' 14.25 Preparing metadata (pyproject.toml): started 14.44 Preparing metadata (pyproject.toml): finished with status 'done' 14.48 Collecting dj-rest-auth<4.0,>=3.0 (from -r /tmp/requirements.txt (line 7)) 14.50 Downloading dj-rest-auth-3.0.0.tar.gz (100 kB) 14.51 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.2/100.2 kB 10.6 MB/s eta 0:00:00 14.54 Installing build dependencies: started 15.52 Installing build dependencies: finished with status 'done' 15.52 Getting requirements to build wheel: started 15.63 Getting requirements to build wheel: finished with status 'done' 15.63 Preparing metadata (pyproject.toml): started 15.75 Preparing metadata (pyproject.toml): finished with status 'done' 15.79 Collecting asgiref<4,>=3.3.2 (from Django<4.0,>=3.2.4->-r /tmp/requirements.txt (line 1)) 15.79 Obtaining dependency information for asgiref<4,>=3.3.2 from 15.80 Downloading asgiref-3.7.2-py3-none-any.whl.metadata (9.2 kB) 15.87 Collecting pytz (from Django<4.0,>=3.2.4->-r /tmp/requirements.txt (line 1)) 15.90 Downloading pytz-2023.3-py2.py3-none-any.whl (502 kB) 15.93 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 502.3/502.3 kB 20.1 MB/s eta 0:00:00 15.96 Collecting sqlparse>=0.2.2 (from Django<4.0,>=3.2.4->-r /tmp/requirements.txt (line 1)) 15.98 Downloading sqlparse-0.4.4-py3-none-any.whl (41 kB) 15.99 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.2/41.2 kB 11.2 MB/s eta 0:00:00 16.05 Collecting pyjwt<3,>=1.7.1 (from djangorestframework-simplejwt<5.3.0,>=4.8.0->-r /tmp/requirements.txt (line 3)) 16.07 Downloading PyJWT-2.7.0-py3-none-any.whl (22 kB) 16.11 Collecting uritemplate>=2.0.0 (from drf-spectacular<0.30,>=0.15.1->-r /tmp/requirements.txt (line 5)) 16.13 Downloading uritemplate-4.1.1-py2.py3-none-any.whl (10 kB) 16.18 Collecting PyYAML>=5.1 (from drf-spectacular<0.30,>=0.15.1->-r /tmp/requirements.txt (line 5)) 16.20 Downloading PyYAML-6.0.tar.gz (124 kB) 16.21 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 125.0/125.0 kB 16.8 MB/s eta 0:00:00 16.31 Installing build dependencies: started 18.33 Installing build dependencies: finished with status 'done' 18.33 Getting requirements to build wheel: started 18.48 Getting requirements to build wheel: finished with status 'error' 18.48 error: subprocess-exited-with-error 18.48 18.48 × Getting requirements to build wheel did not run successfully. 18.48 │ exit code: 1 18.48 ╰─> [48 lines of output] 18.48 running egg_info 18.48 writing lib/PyYAML.egg-info/PKG-INFO 18.48 writing dependency_links to lib/PyYAML.egg-info/dependency_links.txt 18.48 writing top-level names to lib/PyYAML.egg-info/top_level.txt 18.48 Traceback (most recent call last): 18.48 File "/py/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module> 18.48 main() 18.48 File "/py/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main 18.48 json_out['return_val'] = hook(**hook_input['kwargs']) 18.48 File "/py/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel 18.48 return hook(config_settings) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel 18.48 return self._get_build_requires(config_settings, requirements=['wheel']) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires 18.48 self.run_setup() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 338, in run_setup 18.48 exec(code, locals()) 18.48 File "<string>", line 288, in <module> 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 107, in setup 18.48 return distutils.core.setup(**attrs) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 185, in setup 18.48 return run_commands(dist) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 201, in run_commands 18.48 dist.run_commands() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands 18.48 self.run_command(cmd) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1234, in run_command 18.48 super().run_command(command) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command 18.48 cmd_obj.run() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 314, in run 18.48 self.find_sources() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 322, in find_sources 18.48 mm.run() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 551, in run 18.48 self.add_defaults() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 589, in add_defaults 18.48 sdist.add_defaults(self) 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/command/sdist.py", line 104, in add_defaults 18.48 super().add_defaults() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py", line 251, in add_defaults 18.48 self._add_defaults_ext() 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py", line 336, in _add_defaults_ext 18.48 self.filelist.extend(build_ext.get_source_files()) 18.48 File "<string>", line 204, in get_source_files 18.48 File "/tmp/pip-build-env-a_iltcrr/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__ 18.48 raise AttributeError(attr) 18.48 AttributeError: cython_sources 18.48 [end of output] 18.48 18.48 note: This error originates from a subprocess, and is likely not a problem with pip. 18.49 error: subprocess-exited-with-error 18.49 18.49 × Getting requirements to build wheel did not run successfully. 18.49 │ exit code: 1 18.49 ╰─> See above for output. 18.49 18.49 note: This error originates from a subprocess, and is likely not a problem with pip. 

I build this exact image with these dependencies yesterday so I know it's compatible. Yet tried to build today and no longer works.

With the answer from Simeon Borisov, the problem seems to be drf-spectacular in my requirements folder, as removing this fixes the build.

However, I'm still struggling.

  1. Adding pyyaml==5.4.1 above it does not fix the problem.
  2. This is curious, as before these exact versions worked together, but now they do not. Furthermore, older versions I've seem compiled in tutorials in which I first learned docker, which I have used myself, also no longer work for me. What exactly changed?

After adding pyyaml dependency, my error log is as follows:

Collecting Django<4.0,>=3.2.4 (from -r /tmp/requirements.txt (line 1)) 23.17 Obtaining dependency information for Django<4.0,>=3.2.4 from 23.32 Downloading Django-3.2.20-py3-none-any.whl.metadata (4.1 kB) 23.37 Collecting djangorestframework<3.14.0,>=3.12.4 (from -r /tmp/requirements.txt (line 2)) 23.39 Downloading djangorestframework-3.13.1-py3-none-any.whl (958 kB) 23.54 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 958.3/958.3 kB 6.8 MB/s eta 0:00:00 23.57 Collecting djangorestframework-simplejwt<5.3.0,>=4.8.0 (from -r /tmp/requirements.txt (line 3)) 23.60 Downloading djangorestframework_simplejwt-5.2.2-py3-none-any.whl (85 kB) 23.61 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.4/85.4 kB 9.6 MB/s eta 0:00:00 23.68 Collecting psycopg2<2.9,>=2.8.6 (from -r /tmp/requirements.txt (line 4)) 23.71 Downloading psycopg2-2.8.6.tar.gz (383 kB) 23.76 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 383.8/383.8 kB 7.9 MB/s eta 0:00:00 23.80 Installing build dependencies: started 25.10 Installing build dependencies: finished with status 'done' 25.10 Getting requirements to build wheel: started 25.23 Getting requirements to build wheel: finished with status 'done' 25.23 Preparing metadata (pyproject.toml): started 25.36 Preparing metadata (pyproject.toml): finished with status 'done' 25.46 Collecting pyyaml==5.4.1 (from -r /tmp/requirements.txt (line 5)) 25.48 Downloading PyYAML-5.4.1.tar.gz (175 kB) 25.50 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.1/175.1 kB 7.7 MB/s eta 0:00:00 25.60 Installing build dependencies: started 27.95 Installing build dependencies: finished with status 'done' 27.95 Getting requirements to build wheel: started 28.12 Getting requirements to build wheel: finished with status 'error' 28.12 error: subprocess-exited-with-error 28.12 28.12 × Getting requirements to build wheel did not run successfully. 28.12 │ exit code: 1 28.12 ╰─> [62 lines of output] 28.12 /tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg` 28.12 !! 28.12 28.12 ******************************************************************************** 28.12 The license_file parameter is deprecated, use license_files instead. 28.12 28.12 By 2023-Oct-30, you need to update your project and remove deprecated calls 28.12 or your builds will no longer be supported. 28.12 28.12 See for details. 28.12 ******************************************************************************** 28.12 28.12 !! 28.12 parsed = self.parsers.get(option_name, lambda x: x)(value) 28.12 running egg_info 28.12 writing lib3/PyYAML.egg-info/PKG-INFO 28.12 writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt 28.12 writing top-level names to lib3/PyYAML.egg-info/top_level.txt 28.12 Traceback (most recent call last): 28.12 File "/py/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module> 28.12 main() 28.12 File "/py/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main 28.12 json_out['return_val'] = hook(**hook_input['kwargs']) 28.12 File "/py/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel 28.12 return hook(config_settings) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel 28.12 return self._get_build_requires(config_settings, requirements=['wheel']) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires 28.12 self.run_setup() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 338, in run_setup 28.12 exec(code, locals()) 28.12 File "<string>", line 271, in <module> 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 107, in setup 28.12 return distutils.core.setup(**attrs) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 185, in setup 28.12 return run_commands(dist) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 201, in run_commands 28.12 dist.run_commands() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands 28.12 self.run_command(cmd) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1234, in run_command 28.12 super().run_command(command) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command 28.12 cmd_obj.run() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 314, in run 28.12 self.find_sources() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 322, in find_sources 28.12 mm.run() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 551, in run 28.12 self.add_defaults() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 589, in add_defaults 28.12 sdist.add_defaults(self) 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/command/sdist.py", line 104, in add_defaults 28.12 super().add_defaults() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py", line 251, in add_defaults 28.12 self._add_defaults_ext() 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py", line 336, in _add_defaults_ext 28.12 self.filelist.extend(build_ext.get_source_files()) 28.12 File "<string>", line 201, in get_source_files 28.12 File "/tmp/pip-build-env-m9dhhrb5/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__ 28.12 raise AttributeError(attr) 28.12 AttributeError: cython_sources 28.12 [end of output] 28.12 28.12 note: This error originates from a subprocess, and is likely not a problem with pip. 28.13 error: subprocess-exited-with-error 28.13 28.13 × Getting requirements to build wheel did not run successfully. 28.13 │ exit code: 1 28.13 ╰─> See above for output. 
4

9 Answers

Important security disclaimer: I would strongly discourage anyone downgrading PyYAML to 5.3.1, as versions before 5.4 all have a known CVE — CVE-2020-14343.


This issue was caused by an incompatibility of PyYAML<6.0.1 compiled under the version of Cython>=3.0, released on July 17, 2023.

This has now been fixed by a new release of PyYAML, tagged 6.0.1.

This release brings

No code changes; update PEP518 build metadata to require Cython < 3.0 until packaging code is rewritten for Cython 3.0 compatibility.

As it can be read in this project announcements

So, as long as you don't have a strict pinning of PyYAML to a specific version, which seems to be your case in your requirements file, then, everything would be working properly again.


If your library is constrained to PyYAML<6.0, a fix could be to install the said library with the flag --no-build-isolation:

python -m pip install --no-build-isolation \ <problematic-library-depending-on-old-verion-of-PyYAML> 
3

Update to pyyaml==6.0.1 hepled me

Basically, it's the new release of cython 3.0.0 that create the issue.

In my case, the issue was with awscli. By adding this line before my awscli install, it fixed my issue.

The benefit of this method is also that you don't go back to a vulnerable pyyaml 5.3.1.

pip install "cython<3.0.0" wheel && pip install pyyaml==5.4.1 --no-build-isolation pip install awscli 

Edit: With awscli >= 1.29.4, you can now use pyyaml 6.0.1 and fix the issue.

pip install pyyaml~=6.0 pip install awscli 

It seems like a regression according to this thread. The PyYAML package is probably a dependency of one of your dependencies and autoupdated to a broken version (most likely because of drf-spectacular). You should be able to add the pyyaml package into your reuqirements.txt and specify the version of it. Perhaps you should also be more specific with the versioning of drf-spectacular, in case you get dependency compatibility issues.

pyyaml==5.4.1 drf-spectacular=={whatever the version was yesterday} 

If you'd like to avoid this in the future, consider using pipenv and it's Pipfile and Pipfile.lock versioning system, which gives you control over which versions you use in your build.

Edit: I see from other threads the issue has been resolved and it's probably a good idea to update pyyaml to the latest version.

4

Downgrading to pyyaml==5.3.1 worked for me, couldn't upgrade to the latest version since I was facing dependencies conflicts in my project

Change the version to PyYAML~=6.0 so we get the latest 6.0-compatible release.

I managed to fix the issue by doing the following:

pip install "Cython<3" pip install pyyaml==5.4.1 --no-cache-dir --no-build-isolation pip install docker-compose 

Reference:

1

As β.εηοιτ.βε noted, this error is due to an incompatibility of PyYAML<6.0.1 compiled under the version of Cython>=3.0 that has now been fixed in later PyYAML versions.

However, I don't have PyYAML listed as a dependency in my requirements.txt. So PyYAML is clearly a dependency of one of my dependencies... but which one?

To find out, I simply added PyYAML==6.0.1 to my requirements.txt file. When I ran pip install -r requirements.txt, the console outputted a helpful error:

ERROR: Cannot install -r requirements.txt (line 1) and PyYAML==6.0.1 because these package versions have conflicting dependencies. The conflict is caused by: The user requested PyYAML==6.0.1 example_dependency 31.0.0 depends on PyYAML<6.0 and >=5.1 

With this information, I upgraded that example_dependency to the most recent version, and that resolved the issue.

Docker Compose is now (2023) a Golang binary included as a subcommand of docker, called via docker compose ...

If for some reason you want docker-compose alone, is available for download precompiled for Windows and Linux from

For Linux on x64, the direct download line right now (v2.23) is this:

 curl -SL -o /usr/local/bin/docker-compose 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like