amazon-web-servicesamazon-elastic-beanstalkvirtualenvebextensions

Installing pip package through .ebextensions


I am having trouble installing the package psycopg2 through ebextensions.

00_software.config

packages:
  yum:
    git: []
    htop: []
  pip:
    psycopg2: []

01_setup_pg_activity.config

commands:
    clone:
        command: git clone https://github.com/dalibo/pg_activity.git
    install_psycopg2:
        command: cd pg_activity && python setup.py install

Alternatively, I have also tried this to no avail

commands:
    clone:
        command: git clone https://github.com/dalibo/pg_activity.git
    install_psycopg2:
        command: pip install psycopg2
    install_psycopg2:
        command: cd pg_activity && python setup.py install

The other software installs but pip packages will not

Traceback (most recent call last):
  File "/usr/local/bin/pg_activity", line 4, in <module>
    __import__('pkg_resources').run_script('pg-activity==1.6.1', 'pg_activity')
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 742, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1510, in run_script
    exec(script_code, namespace, namespace)
  File "/usr/local/lib/python2.7/site-packages/pg_activity-1.6.1-py2.7.egg/EGG-INFO/scripts/pg_activity", line 42, in <module>

ImportError: No module named psycopg2

I have to manually go in and run sudo pip install psycopg2 for it to correctly install. How can I do this in the build process?


Solution

  • If you are using a virtual environment and EB CLI, simply creating requirements.txt will be enough while the virtual environment is active. EB CLI handles the package installations on deployment.