将Flask应用程序部署到Heroku会引起psycopg2的一个重要问题

2024-09-30 01:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我正在通过《FlaskWeb开发》一书学习Flask。当我完成代码并将其部署到Heroku时,发生了以下错误:

ImportError: /app/.heroku/python/lib/python3.6/
sitepackages/psycopg2/.libs/libresolv-2-c4c53def.5.so: 
symbol __res_maybe_init version GLIBC_PRIVATE not defined 
in file libc.so.6 with link time reference

不过,这在当地很管用。我搜索了关于psycopg2的相关问题,并调整了psycopg2的版本,但仍然发生同样的错误。请问,我怎么解决这个问题?在


Tags: 代码appflaskherokusolib部署错误
1条回答
网友
1楼 · 发布于 2024-09-30 01:31:56

我也有同样的问题。我通过强制heroku清理python虚拟环境并使用psycopg2>=2.7,<2.8 no-binary psycopg2重新安装requirements.txt文件来解决这个问题。我必须承认,这感觉有点像魔术,但我所采取的步骤是值得的:

  1. 使用gitbashforwindows,我用heroku login登录到heroku。在
  2. 接下来,我导航到我正在处理的git/project文件夹的根文件夹。在
  3. 在那里,我确保通过运行venv/Scripts/pip freeze > requirements.txt更新了我的requirements.txt。您可能需要找到自己的python/虚拟环境路径。在
  4. 接下来,我将psycopg2的行/条目改为psycopg2>=2.7,<2.8 no-binary psycopg2。在
  5. 然后将requirements.txt文件的所有内容保存到桌面上,确保项目文件夹中的内容为空。不确定这一步是否必要。但我就是这么做的,所以我就在这里提一下。在
  6. 现在在gitbash终端中,我运行heroku apps:info -a blogglistene来查找我的heroku堆栈的版本,对我来说是heroku-18。在
  7. 下一步是look online,用于heroku-18支持的python版本。它说默认值是python-3.6.6(然后我假设它就是我正在运行的那个),以及其他一些。在
  8. 然后我从列表中任意选择python-2.7.15,并将该文本添加到一个runtime.txt文件中,该文件位于我项目文件夹的根目录下。在
  9. 接下来,我将其提交到我的heroko git repo中,并将其部署。这将暂时中断生成。据我所知,这背后的魔力在于heroku现在完全销毁了python解释的和环境,因此没有延迟的缓存文件或任何东西。一笔勾销。在
  10. 然后,我将runtime.txt的内容恢复为python-3.6.6的默认值,并重新添加了requirements.txt文件的内容,确保我所做的更改在那里。在
  11. 最后,我提交并推送这个,我的应用程序恢复并运行。在

相关问题 更多 >

    热门问题