heroku 错误:无法为backports.zoneinfo构建wheel,安装基于pyproject. toml的项目需要该文件

vohkndzv  于 2022-11-13  发布在  其他
关注(0)|答案(7)|浏览(497)

在过去的几天里,当我尝试部署Django应用程序时,Heroku Build返回了这个错误。Django代码和文件结构与Django的官方文档相同,Procfile被添加到根文件夹中。
对数-

-----> 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
  • 谢谢-谢谢
cwxwcias

cwxwcias1#

我在heroku上部署我的应用程序时遇到了同样的错误,问题实际上是当你在heroku上部署它时,heroku默认使用python版本3.10.x和backports.zoneinfo在这个版本上不能正常工作,所以我建议你切换到版本3.8.x(稳定)。
为了做到这一点,你需要告诉heroku切换该版本,它可以这样做:
1.在根目录中创建runtime.txt
1.python-3.8.10〈-在'runtime.txt'中写入此内容,以指定版本。
1.然后heroku将安装此版本,您将不会再收到任何错误。
PS:为我工作过,以后当heroku删除这个bug时,你可以切换到python的最新版本。

qmb5sa22

qmb5sa222#

使用python〉= 3.9时避免安装backports.zoneinfo
编辑您的requirements.txt文件

发件人:

backports.zoneinfo==0.2.1

收件人:

backports.zoneinfo;python_version<"3.9"

或:

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

您可以在这里阅读更多关于here的信息

lqfhib0f

lqfhib0f3#

我在创建我的容器时遇到了同样的错误。我通过使用我的Python venv的确切版本即3.8.9解决了这个错误
早些时候的图片,我使用3.8-alpine的图像的一个较轻的版本。但是,它不工作了,我得到了同样的错误,你的。

gc0ot86w

gc0ot86w4#

当你忘记修改requirements.txt文件和heroku服务器使用默认设置时,这种类型的问题就会发生,就像它使用python更新版本一样,这是不稳定的。使用以下命令,你将摆脱这种类型的问题。

$ git status

您需要修改requirements.txt
$ git加-A
Python 3.8.10中的一个版本
然后推你的服务器,我相信你会摆脱这种类型的问题。为了推你的服务器...

$ git push heroku master
l2osamch

l2osamch5#

将Python从3.10.5降级到3.9.0对我很有效,希望这对我有所帮助。

lrpiutwd

lrpiutwd6#

用python3.9版本安装venv对我有帮助。
python3.9默认版本在我的系统

python3.9 -m venv venv
pbgvytdp

pbgvytdp7#

我在Heroku上部署Scrapy spider时遇到了同样的错误,但是使用runtime.txt中的python-3.9.15解决了这个问题。但是,我的venv中安装的python是3.8.13
您可以尝试其中之一我不知道它们的实际含义,但这些是Heroku推荐的,您可以阅读完整的文档here

Supported runtimes
python-3.10.8 on all supported stacks (recommended)
python-3.9.15 on all supported stacks
python-3.8.15 on Heroku-18 and Heroku-20 only
python-3.7.15 on Heroku-18 and Heroku-20 only

相关问题