最近,我正在通过《 Flask Web开发》一书学习Flask。当我完成代码并将其部署到Heroku时,发生了以下错误:
String
但是,这在本地可以正常工作。我已经搜索了有关JText
的相关问题,并且已经调整了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
的版本,但是仍然发生相同的错误。拜托,我该如何解决这个问题?
答案 0 :(得分:0)
我遇到了同样的问题。我通过强制heroku清理python虚拟环境并使用requirements.txt
重新安装psycopg2>=2.7,<2.8 --no-binary psycopg2
文件来解决此问题。我必须承认,它的感觉有点像魔术,但是对于我来说,这里采取的步骤对于它的价值是什么:
heroku login
登录到heroku。requirements.txt
更新了venv/Scripts/pip freeze > requirements.txt
。您可能必须找到自己的python /虚拟环境路径。psycopg2
的行/条目更改为psycopg2>=2.7,<2.8 --no-binary psycopg2
。requirements.txt
文件的所有内容保存到我的桌面,确保项目文件夹中的所有内容为空。不知道此步骤是否必要。但这就是我所做的,所以我只想在这里提及。heroku apps:info -a blogglistene
来查找myoku堆栈的版本,该版本对我来说是heroku-18
。heroku-18
提供了受支持的python版本。它说默认值是python-3.6.6
(然后假定是我正在运行的那个),还有其他一些。 python-2.7.15
,并将该文本添加到runtime.txt
文件中,该文件放置在项目文件夹的根目录中。runtime.txt
的内容还原为默认的python-3.6.6
,并添加回requirements.txt
文件的内容,确保所做的更改在那里。答案 1 :(得分:0)
我在学习“ Flask Web开发”时遇到了完全相同的问题。我花了一天的时间来尝试解决它,最终成功。它并不像AndréC. Andersen的方法那么复杂。
这本书是Miguel Grinberg撰写的Flask Web Development的第二版。第17章。部署。当您一直工作到使用git push部署之前。在git push heroku master
之后,将应用程序上传到heroku遥控器。现在已部署并运行了该应用程序,但由于尚未执行初始化数据库表的deploy命令,因此该应用程序将无法正常工作。您需要使用
heroku run flask deploy
在heroku上创建数据库。这就是问题的根源。
因为此时您的git repo HEAD在17c处。还不是master分支。如果您现在进行任何更改,它将不会更改heroku环境。这样做的意义
git branch
您将看到:
(HEAD detached from 17c)
master
但这不是您想要的。没有连接到17c的头部。您只想看到master
哪个成就
git checkout master
然后git branch
将仅显示master分支。因此,您可以对项目进行调整,heroku将会更新。这样做是因为您最终将git push到master分支。我认为您可以git push到其他分支以使heroku工作,但我不知道该怎么做。
psycopg2==2.7.3
更改为psycopg2-binary==2.8.3
因为psycopg2 2.7.3将给您GLIBC_PRIVATE错误。 (您可以通过heroku run bash
进行检查,然后启动python,导入psycopg2,如果heroku依赖性为2.7.3,则将看到相同的错误。)
现在,将您的需求/heroku.txt(heroku环境依赖性)行psycopg2==2.7.3
更改为psycopg2-binary==2.8.3
。出于某种原因,psycopg2的二进制版本可以正常工作(不知道为什么。但是我看到了很多有关stackover的讨论)。然后,
git add .
git commit -m "notes"
照常。
git push heroku master
推送到heroku master分支。如果您不执行第一步,则git将显示Everything up-to-date
。因此不会进行更改,因为您承诺不掌握。现在您可以看到git正在下载psycopg2-binary。
您可以通过打开heroku bash,然后pip list
再次检查它确实是psycopg2-binary。您将同时看到psycopg2和psycopg2-binary。现在启动python,您可以毫无问题地导入psycopg2。
最后。 heroku run flask deploy
。瞧!
我坚持第一步。由于我对heroku项目所做的任何更改都不会更新。