Psycopg2 on Amazon Elastic Beanstalk

2019-01-25 02:13发布

问题:

I'm trying upload my project (in python) that uses Psycopg2 for Amazon Elastic Beanstalk. I'm doing this with a zip file containing my project and an requirements.txt file.

But I'm receiving this error:

Downloading/unpacking psycopg2>=2.4.6 (from -r /opt/python/ondeck/app/requirements.txt (line 3)) Running setup.py egg_info for package psycopg2 Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:

    python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.
Complete output from command python setup.py egg_info:
running egg_info

How can I solve this on Amazon?

回答1:

Need postgresql-devel in your container. Create a file '.ebextensions/packages.config' with the contents:

packages:
  yum:
    postgresql94-devel: []

Replace 94 in postgresql94-devel with whatever version of postgres you need. For example, postgresql93-devel for postgres 9.3.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-packages



回答2:

Tried to comment on the accepted answer but don't have the reputation to do so. Recent forum posts from AWS support indicate that the package name is "postgresql93-devel". postgresql-devel does not work in the 2014.09 AMIs.



回答3:

I struggled for a while with and couldn't get the above solution to work. I tried many other solutions as well, but it ended up being a lack of fundamental understanding on my part.

The config files are read alphabetically. So if you have more than one, which you likely do, make sure that 'packages.config' comes alphabetically before your .config with container_commands.

Otherwise 'syncdb' for example will be called before your packages have been installed.