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

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

16

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 docker.io/library/python:3.9-alpine3.13                                                                                                                           0.5s 
 => [backend 1/6] FROM docker.io/library/python:3.9-alpine3.13@sha256:a7cbd1e7784a35a098cedbc8681b790d35ff6030a5e13f043185e2465003a040                                                                     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 https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
4.832 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
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 https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
5.520 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
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 https://files.pythonhosted.org/packages/84/eb/5329ae72bf26b91844985d0de74e4edf876e3ca409d085820f230eea2eba/Django-3.2.20-py3-none-any.whl.metadata
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 https://files.pythonhosted.org/packages/e2/3b/29189bbfb2443335ed1d6f0750d14f7ba5e5b89699a58cc87fa82fdb5f49/drf_spectacular-0.26.3-py3-none-any.whl.metadata
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 https://files.pythonhosted.org/packages/9b/80/b9051a4a07ad231558fcd8ffc89232711b4e618c15cb7a392a17384bbeef/asgiref-3.7.2-py3-none-any.whl.metadata
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 https://files.pythonhosted.org/packages/84/eb/5329ae72bf26b91844985d0de74e4edf876e3ca409d085820f230eea2eba/Django-3.2.20-py3-none-any.whl.metadata
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 https://setuptools.pypa.io/en/latest/userguide/declarative_config.html 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.

Solution

With the advice of Simeon I found the exact problem. The problem is not just with drf, but the pyyaml dependency. This was due to an update, and so the recent (as of the time of this post) 5.4.1 is itself broken. I believe it was an update to Cython which caused this. The GitHub issue can be found here.

The solution, as posted there, is to install pyyaml; and downgrade to 5.3.1 for the time being.

Share

0

5 Answers
5

Reset to default

Highest score (default)

Trending (recent votes count more)

Date modified (newest first)

Date created (oldest first)

18

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>

Share

4

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.

Share

3

  • I appreciate the help. I think you are correct that drf is the problem. Furthermore, Collecting PyYAML>=5.1 at drf install is where the bug occurs. However, the natural solution you mention to install pyyaml breaks as well. I added the respective error block to my original question.

    – Marco Sousa

    yesterday

  • Perhaps try to also set the Cython version to something like Cython<3.0. You could utilise a constraints.txt file (luminousmen.com/post/pip-constraints-files) to set the versions specifically without explicitly installing the package itself.

    – Simeon Borisov

    yesterday

  • Yeah, the error seems to be between the cython and pyyaml dependencies, most generally. I downgraded pyyaml to 5.3.1 to fix my issue with drf. Thank you for your help.

    – Marco Sousa

    yesterday

4

Update to pyyaml==6.0.1 hepled me

Share

0

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

Share

New contributor

Suresh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

0

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

Share

Your Answer

Draft saved
Draft discarded

Post as a guest

Required, but never shown


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.

Not the answer you're looking for? Browse other questions tagged

or ask your own question.

Leave a Reply

Your email address will not be published. Required fields are marked *