1

I am in the process of migrating a Django app from Heroku to Elastic Beanstalk. It is working fine in Heroku as is.

I am getting the error Your requirements.txt is invalid. Snapshot your logs for details. When I dive into the eb-activity.log I see the failure seems to be related to atlas and scipy. I don't understand why requirements.txt is invalid on aws but valid on heroku. Insight into what is causing this error and how to remedy would be greatly appreciated.

My eb-activity.log

      /opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/system_info.py:572: UserWarning:
          Atlas (http://math-atlas.sourceforge.net/) libraries not found.
          Directories to search for the libraries can be specified in the
          numpy/distutils/site.cfg file (section [atlas]) or by setting
          the ATLAS environment variable.
        self.calc_info()
      /opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/system_info.py:572: UserWarning:
          Lapack (http://www.netlib.org/lapack/) libraries not found.
          Directories to search for the libraries can be specified in the
          numpy/distutils/site.cfg file (section [lapack]) or by setting
          the LAPACK environment variable.
        self.calc_info()
      /opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/system_info.py:572: UserWarning:
          Lapack (http://www.netlib.org/lapack/) sources not found.
          Directories to search for the sources can be specified in the
          numpy/distutils/site.cfg file (section [lapack_src]) or by setting
          the LAPACK_SRC environment variable.
        self.calc_info()
      Running from scipy source directory.
      Traceback (most recent call last):
        File "<string>", line 1, in <module>
        File "/tmp/pip-build-ix0qk_kf/scipy/setup.py", line 416, in <module>
          setup_package()
        File "/tmp/pip-build-ix0qk_kf/scipy/setup.py", line 412, in setup_package
          setup(**metadata)
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/core.py", line 135, in setup
          config = configuration()
        File "/tmp/pip-build-ix0qk_kf/scipy/setup.py", line 336, in configuration
          config.add_subpackage('scipy')
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/misc_util.py", line 1029, in add_subpackage
          caller_level = 2)
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/misc_util.py", line 998, in get_subpackage
          caller_level = caller_level + 1)
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/misc_util.py", line 935, in _get_configuration_from_setup_py
          config = setup_module.configuration(*args)
        File "scipy/setup.py", line 15, in configuration
          config.add_subpackage('linalg')
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/misc_util.py", line 1029, in add_subpackage
          caller_level = 2)
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/misc_util.py", line 998, in get_subpackage
          caller_level = caller_level + 1)
        File "/opt/python/run/venv/local/lib64/python3.4/site-packages/numpy/distutils/misc_util.py", line 935, in _get_configuration_from_setup_py
          config = setup_module.configuration(*args)
        File "scipy/linalg/setup.py", line 20, in configuration
          raise NotFoundError('no lapack/blas resources found')
      numpy.distutils.system_info.NotFoundError: no lapack/blas resources found
      non-existing path in 'scipy/integrate': 'quadpack.h'

      ----------------------------------------
  Command "/opt/python/run/venv/bin/python3.4 -c "import setuptools, tokenize;__file__='/tmp/pip-build-ix0qk_kf/scipy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-s8me7lme-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/python/run/venv/include/site/python3.4/scipy" failed with error code 1 in /tmp/pip-build-ix0qk_kf/scipy
  You are using pip version 7.1.2, however version 9.0.1 is available.
  You should consider upgrading via the 'pip install --upgrade pip' command.
  2017-08-29 05:20:43,974 ERROR    Error installing dependencies: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 1
  Traceback (most recent call last):
    File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 22, in main
      install_dependencies()
    File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 18, in install_dependencies
      check_call('%s install -r %s' % (os.path.join(APP_VIRTUAL_ENV, 'bin', 'pip'), requirements_file), shell=True)
    File "/usr/lib64/python2.7/subprocess.py", line 541, in check_call
      raise CalledProcessError(retcode, cmd)
  CalledProcessError: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 1 (Executor::NonZeroExitStatus)

My requirements.txt:

amqp==2.1.4
apiai==1.2.3
billiard==3.5.0.2
celery==4.0.2
certifi==2017.4.17
chardet==3.0.4
DateTime==4.2
Django==1.11.2
django-eztables==0.3.2
django-hstore==1.4.2
django-tables2==1.9.0
django.js==0.8.1
djangorestframework==3.6.3
gunicorn==19.7.1
idna==2.5
kombu==4.0.2
messagebird==1.2.0
numpy==1.13.0
psycopg2==2.7.1
pytz==2017.2
requests==2.18.1
requests-toolbelt==0.8.0
urllib3==1.21.1
vine==1.1.3
virtualenv==15.1.0
whitenoise==3.3.0
zope.interface==4.4.2
gevent==1.2.1
klein==17.2.0
boto3==1.4.4
typing==3.5.3.0
future==0.16.0
six==1.10.0
jsonschema==2.6.0
tqdm==4.11.2
scipy==0.19.0
# sklearn_crfsuite
sklearn-crfsuite==0.3.5
# spacy
spacy==1.8.2
# sklearn
scikit-learn==0.18.1
# duckling
duckling==1.7.1
# cloudpickle
cloudpickle==0.2.2
# test
python-coveralls==2.9.1
pytest-pep8==1.0.6
pytest-services==1.1.14
pytest-cov==2.5.1
pytest-twisted==1.5
pytest==3.0.7
treq==17.3.1
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-1.2.0/en_core_web_sm-1.2.0.tar.gz

Note: the answer may be slightly relate to this question in which the user was having issues compiling scipy in Windows.

My django.config in .ebextensions

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: presto/wsgi.py
packages:

      yum:
        postgresql93: []
        postgresql93-devel: []
        pkgconfig: []
        gcc-c++: []
        python34-devel: []

It may be that I need additional dependancies in order to compile requirements.txt correctly.

dirkgroten
  • 20,112
  • 2
  • 29
  • 42
hackerman
  • 1,221
  • 3
  • 17
  • 38
  • The error is: `numpy.distutils.system_info.NotFoundError: no lapack/blas resources found`, so you should change your question to "Why does scipy installation fail with pip on Elastic Beanstalk". Also if you search for that error, you'll see that you need to install the `atlas` and `atlas-dev` packages (or another BLAS/LAPACK if you prefer) – dirkgroten Aug 29 '17 at 17:11
  • See [this link](https://scipy.org/scipylib/building/linux.html#installation-from-source) for details on how to install `atlas`. I expect you need to add some of these to your `.ebextensions` yum packages. – dirkgroten Aug 29 '17 at 17:16

1 Answers1

2

You need to have a BLAS/LAPACK installed (so that atlas and atlas-dev are available on your system). See this link for instructions and try adding libblas-dev and liblapack-dev to the yum list of packages in your config file.

dirkgroten
  • 20,112
  • 2
  • 29
  • 42