弹性beanstalk上的psycopg2 - 无法部署应用程序

时间:2015-11-17 01:47:24

标签: python postgresql amazon-ec2 flask elastic-beanstalk

我将我的第一个应用程序(Flask)部署到EB并且遇到了麻烦。使用PostgreSQL需要我安装psycopg2,但我无法弄清楚如何让它运行。

我在这篇文章(Psycopg2 on Amazon Elastic Beanstalk)以及这篇文章(https://realpython.com/blog/python/deploying-a-django-app-to-aws-elastic-beanstalk/)中看到了我需要使用以下代码添加文件名change(p, y, 5)

.elasticbeanstalk/01_packages.config

我已尝试使用packages: yum: postgresql-devel: [] 进行不同的变化,但仍然没有运气。下面附有我的错误日志。

postgresql93-devel: []

似乎很清楚我需要安装psycopg2,但我不确定我可以采取哪些其他步骤来实现这一目的。

3 个答案:

答案 0 :(得分:8)

我解决了,你需要先打开EC2实例,然后像这样安装

sudo yum install postgresql-devel

然后部署你的EB

答案 1 :(得分:6)

很有趣,对我来说 Amazon Linux 2 的解决方案最终是最初的问题- 添加01_package.conf,其中包含

的内容
packages:
  yum:
    postgresql-devel: []

此外,这与我在网上发现的几乎所有针对使用postgresql96-devel或其他编号的答案都相反。我发现我需要在通过SSH进入EC2实例并查看所有可用的Yum软件包后,将软件包名称postgresql-devel设置为

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ yum list available | grep 'postgresql'
freeradius-postgresql.x86_64           3.0.13-10.amzn2                amzn2-core
pcp-pmda-postgresql.x86_64             3.12.2-5.amzn2                 amzn2-core
postgresql.x86_64                      10.4-5.amzn2.0.2               amzn2extra-postgresql10
postgresql-contrib.x86_64              10.4-5.amzn2.0.2               amzn2extra-postgresql10
postgresql-devel.x86_64                10.4-5.amzn2.0.2               @amzn2extra-postgresql10
postgresql-docs.x86_64                 10.4-5.amzn2.0.2               amzn2extra-postgresql10
...

,我看到它只是postgres-devel。一旦我将其更改为可以部署。如果在运行eb之前将git与eb deploy一起使用,请确保提交更改-或至少将更改添加到git临时区域并也与eb deploy --staged一起运行。那使我不知所措地想了想我已经尝试过软件包名称的问题了。

我发现answers on this stackoverflow post here也很有帮助。祝你好运!


我最终需要一个比上述答案(发布时的psql)默认的11.x客户端(9.2)更新的客户端。 This answer here是使它起作用的唯一方法。为后代粘贴的答案...

packages:
    yum:
        amazon-linux-extras: []

commands:
    01_postgres_activate:
        command: sudo amazon-linux-extras enable postgresql11
    02_postgres_install:
        command: sudo yum install -y postgresql-devel

答案 2 :(得分:0)

即使在安装postgresql93-devel后,我仍然收到错误"没有名为psycopg2"的模块。要解决这个问题,我必须使用eb ssh连接到我的环境,然后执行sudo pip install psycopg2来解决这个问题。