django-rest-frameworkrenderpython-poetry

ERROR: Could not build wheels for psycopg2, which is required to install pyproject.toml-based projects (during deploy django through render )


I'm trying to deploy my python django rest framework code through render service

Here is my GitHub Code : https://github.com/aza1200/stlib-api

Here I use python version : 3.9.10
Django version : 4.0
poetry version : 1.2.2
django rest frmaework : 3.14.0
psycopg2 = "^2.9.5"
psycopg2-binary = "^2.9.5"

And I've got the message below this.

Dec 8 07:20:11 PM    EnvCommandError
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM    Command ['/opt/render/project/src/.venv/bin/pip', 'install', '--no-deps', '/opt/render/.cache/.python-poetry/cache/artifacts/77/61/85/97cbac6c92f7c877efbd9c5c3c38e2bbcb447e3f416742c8ffc1b2b2ec/psycopg2-2.9.5.tar.gz'] errored with the following return code 1, and output:
Dec 8 07:20:11 PM    Processing /opt/render/.cache/.python-poetry/cache/artifacts/77/61/85/97cbac6c92f7c877efbd9c5c3c38e2bbcb447e3f416742c8ffc1b2b2ec/psycopg2-2.9.5.tar.gz
Dec 8 07:20:11 PM      Installing build dependencies: started
Dec 8 07:20:11 PM      Installing build dependencies: finished with status 'done'
Dec 8 07:20:11 PM      Getting requirements to build wheel: started
Dec 8 07:20:11 PM      Getting requirements to build wheel: finished with status 'done'
Dec 8 07:20:11 PM      Preparing metadata (pyproject.toml): started
Dec 8 07:20:11 PM      Preparing metadata (pyproject.toml): finished with status 'done'
Dec 8 07:20:11 PM    Building wheels for collected packages: psycopg2
Dec 8 07:20:11 PM      Building wheel for psycopg2 (pyproject.toml): started
Dec 8 07:20:11 PM      Building wheel for psycopg2 (pyproject.toml): finished with status 'error'
Dec 8 07:20:11 PM      error: subprocess-exited-with-error
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM      × Building wheel for psycopg2 (pyproject.toml) did not run successfully.
Dec 8 07:20:11 PM      │ exit code: 1
Dec 8 07:20:11 PM      ╰─> [40 lines of output]
Dec 8 07:20:11 PM          /tmp/pip-build-env-9rm8i7ap/overlay/lib/python3.9/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
Dec 8 07:20:11 PM            warnings.warn(msg, warning_class)
Dec 8 07:20:11 PM          running bdist_wheel
Dec 8 07:20:11 PM          running build
Dec 8 07:20:11 PM          running build_py
Dec 8 07:20:11 PM          creating build
Dec 8 07:20:11 PM          creating build/lib.linux-x86_64-cpython-39
Dec 8 07:20:11 PM          creating build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/_range.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/errorcodes.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/pool.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/extras.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/__init__.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/sql.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/extensions.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/errors.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/_ipaddress.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/tz.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          copying lib/_json.py -> build/lib.linux-x86_64-cpython-39/psycopg2
Dec 8 07:20:11 PM          running build_ext
Dec 8 07:20:11 PM          building 'psycopg2._psycopg' extension
Dec 8 07:20:11 PM          creating build/temp.linux-x86_64-cpython-39
Dec 8 07:20:11 PM          creating build/temp.linux-x86_64-cpython-39/psycopg
Dec 8 07:20:11 PM          gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC "-DPSYCOPG_VERSION=2.9.5 (dt dec pq3 ext lo64)" -DPSYCOPG_DEBUG=1 -DPG_VERSION_NUM=140004 -DHAVE_LO64=1 -DPSYCOPG_DEBUG=1 -I/opt/render/project/src/.venv/include -I/opt/python-installer/Python-3.9.10/include/python3.9 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -I/usr/include/libxml2 -c psycopg/adapter_asis.c -o build/temp.linux-x86_64-cpython-39/psycopg/adapter_asis.o -Wdeclaration-after-statement
Dec 8 07:20:11 PM          In file included from psycopg/adapter_asis.c:28:
Dec 8 07:20:11 PM          ./psycopg/psycopg.h:35:10: fatal error: Python.h: No such file or directory
Dec 8 07:20:11 PM           #include <Python.h>
Dec 8 07:20:11 PM                    ^~~~~~~~~~
Dec 8 07:20:11 PM          compilation terminated.
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM          It appears you are missing some prerequisite to build the package from source.
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM          You may install a binary package by installing 'psycopg2-binary' from PyPI.
Dec 8 07:20:11 PM          If you want to install psycopg2 from source, please install the packages
Dec 8 07:20:11 PM          required for the build and try again.
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM          For further information please check the 'doc/src/install.rst' file (also at
Dec 8 07:20:11 PM          <https://www.psycopg.org/docs/install.html>).
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM          error: command '/usr/bin/gcc' failed with exit code 1
Dec 8 07:20:11 PM          [end of output]
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM      note: This error originates from a subprocess, and is likely not a problem with pip.
Dec 8 07:20:11 PM      ERROR: Failed building wheel for psycopg2
Dec 8 07:20:11 PM    Failed to build psycopg2
Dec 8 07:20:11 PM    ERROR: Could not build wheels for psycopg2, which is required to install pyproject.toml-based projects
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM    at /home/render/.python-poetry/venv/lib/python3.7/site-packages/poetry/utils/env.py:1195 in _run
Dec 8 07:20:11 PM        1191│                 output = subprocess.check_output(
Dec 8 07:20:11 PM        1192│                     cmd, stderr=subprocess.STDOUT, **kwargs
Dec 8 07:20:11 PM        1193│                 )
Dec 8 07:20:11 PM        1194│         except CalledProcessError as e:
Dec 8 07:20:11 PM      → 1195│             raise EnvCommandError(e, input=input_)
Dec 8 07:20:11 PM        1196│
Dec 8 07:20:11 PM        1197│         return decode(output)
Dec 8 07:20:11 PM        1198│
Dec 8 07:20:11 PM        1199│     def execute(self, bin, *args, **kwargs):
Dec 8 07:20:11 PM  
Dec 8 07:20:11 PM  ==> Build failed 😞

What should I do for solve this error? Thanks


Solution

  • You should only have one or the other of

    psycopg2 = "^2.9.5"
    psycopg2-binary = "^2.9.5"
    

    not both.

    Try removing psycopg2 = "^2.9.5" from your pyproject.toml file.