ERROR: Could not build wheels for backports.zoneinfo, which is required to install pyproject.toml-based projects

Question:

The Heroku Build is returning this error when I’m trying to deploy a Django application for the past few days. The Django Code and File Structure are the same as Django’s Official Documentation and Procfile is added in the root folder.

Log –

-----> Building on the Heroku-20 stack
-----> Determining which buildpack to use for this app
-----> Python app detected
-----> No Python version was specified. Using the buildpack default: python-3.10.4
       To use a different version, see: https://devcenter.heroku.com/articles/python-runtimes
       Building wheels for collected packages: backports.zoneinfo
         Building wheel for backports.zoneinfo (pyproject.toml): started
         Building wheel for backports.zoneinfo (pyproject.toml): finished with status 'error'
         ERROR: Command errored out with exit status 1:
          command: /app/.heroku/python/bin/python /app/.heroku/python/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpqqu_1qow
              cwd: /tmp/pip-install-txfn1ua9/backports-zoneinfo_a462ef61051d49e7bf54e715f78a34f1
         Complete output (41 lines):
         running bdist_wheel
         running build
         running build_py
         creating build
         creating build/lib.linux-x86_64-3.10
         creating build/lib.linux-x86_64-3.10/backports
         copying src/backports/__init__.py -> build/lib.linux-x86_64-3.10/backports
         creating build/lib.linux-x86_64-3.10/backports/zoneinfo
         copying src/backports/zoneinfo/_zoneinfo.py -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         copying src/backports/zoneinfo/_tzpath.py -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         copying src/backports/zoneinfo/_common.py -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         copying src/backports/zoneinfo/_version.py -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         copying src/backports/zoneinfo/__init__.py -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         running egg_info
         writing src/backports.zoneinfo.egg-info/PKG-INFO
         writing dependency_links to src/backports.zoneinfo.egg-info/dependency_links.txt
         writing requirements to src/backports.zoneinfo.egg-info/requires.txt
         writing top-level names to src/backports.zoneinfo.egg-info/top_level.txt
         reading manifest file 'src/backports.zoneinfo.egg-info/SOURCES.txt'
         reading manifest template 'MANIFEST.in'
         warning: no files found matching '*.png' under directory 'docs'
         warning: no files found matching '*.svg' under directory 'docs'
         no previously-included directories found matching 'docs/_build'
         no previously-included directories found matching 'docs/_output'
         adding license file 'LICENSE'
         adding license file 'licenses/LICENSE_APACHE'
         writing manifest file 'src/backports.zoneinfo.egg-info/SOURCES.txt'
         copying src/backports/zoneinfo/__init__.pyi -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         copying src/backports/zoneinfo/py.typed -> build/lib.linux-x86_64-3.10/backports/zoneinfo
         running build_ext
         building 'backports.zoneinfo._czoneinfo' extension
         creating build/temp.linux-x86_64-3.10
         creating build/temp.linux-x86_64-3.10/lib
         gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/app/.heroku/python/include/python3.10 -c lib/zoneinfo_module.c -o build/temp.linux-x86_64-3.10/lib/zoneinfo_module.o -std=c99
         lib/zoneinfo_module.c: In function ‘zoneinfo_fromutc’:
         lib/zoneinfo_module.c:600:19: error: ‘_PyLong_One’ undeclared (first use in this function); did you mean ‘_PyLong_New’?
           600 |             one = _PyLong_One;
               |                   ^~~~~~~~~~~
               |                   _PyLong_New
         lib/zoneinfo_module.c:600:19: note: each undeclared identifier is reported only once for each function it appears in
         error: command '/usr/bin/gcc' failed with exit code 1
         ----------------------------------------
         ERROR: Failed building wheel for backports.zoneinfo
       Failed to build backports.zoneinfo
       ERROR: Could not build wheels for backports.zoneinfo, which is required to install pyproject.toml-based projects
 !     Push rejected, failed to compile Python app.
 !     Push failed

Thanks.

Asked By: SarveshJoshi

||

Answers:

I was having the same error while deploying my application on heroku and well the problem is actually that when you are deploying it on heroku so heroku by default uses python version 3.10.x and backports.zoneinfo is not working properly with this version so I suggest you to switch to version 3.8.x(stable).

In order to do that you need to tell heroku to switch that version and it can be done as follows :

  1. Create runtime.txt in root directory.
  2. python-3.8.10 <- write this in ‘runtime.txt‘ there as to specify the version.
  3. heroku will then install this version and you will be not getting anymore error.

PS : worked it for me and later when heroku removes this bug you can switch to python latest version.

this type of problems occur when you forget to modify your requirements.txt file and heroku server uses default settings like it uses python updated version which is not stable.
use the following commands and you will be get rid of this type of problem.

$ git status

you need to modify requirements.txt

$ git add-A

$ git commit -m "Python VERSION-3.8.10"

then push your server and i am sure you will be get rid of this type of problem.
In order to push your server…

$ git push heroku master
Answered By: sameer arshad

I was facing the same error while creating my container. I solved the error by using the exact version of my Python venv i.e. 3.8.9

Earlier for the image, I was using 3.8-alpine for a lighter version of the image. But, it wasn’t working out for me and got the same error as yours.

Answered By: Shloka Bhalgat

Avoid installing backports.zoneinfo when using python >= 3.9

Edit your requirements.txt file

FROM:

backports.zoneinfo==0.2.1

TO:

backports.zoneinfo;python_version<"3.9"

OR:

backports.zoneinfo==0.2.1;python_version<"3.9"

You can read more about this here and here

Answered By: ayandebnath

Downgrading Python from 3.10.5 to 3.9.0 worked for me. I hope this helps.

Answered By: Yalchin Mammadli

Install venv with python3.9 version helped for me.

python3.9 default version in my system

python3.9 -m venv venv
Answered By: Semen Shutenko
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.