I am relatively new to Python and I am trying to deploy a Flask app to AWS Beanstalk. I have followed the official tutorial and went through a lot of the resources available online (here or elsewhere) regarding deployment issues with Flask / Django on Beanstalk. No success, I keep getting errors I cannot fix. Below the structure of my app:
|-application.py
|-config.py
|-const.py
|-requirements.txt
|-app/
|--__init.py__
|--views.py
|--models.py
|--static/
|--templates/
My application.py
from app.views import application
application.run(debug=False)
The first few lines of my views.py file that contains the declaration of the Flask app:
from flask import Flask, render_template, redirect, url_for, session, request, abort
from flask_bootstrap import Bootstrap
from . models import Datalayer, Config, Signin
from . util import check_user
from flask_basicauth import BasicAuth
from flask_bcrypt import Bcrypt
from faker import Faker
from htmlmin.minify import html_minify
fake = Faker()
application = app = Flask(__name__)
app.config.from_object('config')
bootstrap = Bootstrap(app)
basic_auth = BasicAuth(app)
bcrypt = Bcrypt(app)
And finally the content of the /var/log/eb-activity.log
SyntaxError: invalid syntax
2017-06-07 19:08:18,171 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 (ElasticBeanstalk::ExternalInvocationError)
caused by: Traceback (most recent call last):
File "/opt/python/run/venv/bin/pip", line 7, in <module>
from pip import main
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/__init__.py", line 15, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/vcs/mercurial.py", line 10, in <module>
from pip.download import path_to_url
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/download.py", line 38, in <module>
from pip._vendor import requests, six
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/_vendor/requests/__init__.py", line 53, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/_vendor/requests/packages/__init__.py", line 3, in <module>
from . import urllib3
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py", line 10, in <module>
from .connectionpool import (
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py", line 37, in <module>
from .request import RequestMethods
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/request.py", line 6, in <module>
from .filepost import encode_multipart_formdata
File "/opt/python/run/venv/local/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py", line 3, in <module>
from uuid import uuid4
File "/opt/python/run/venv/local/lib/python3.4/site-packages/uuid.py", line 138
if not 0 <= time_low < 1<<32L:
^
SyntaxError: invalid syntax
2017-06-07 19:08:18,171 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)
And my requirements.txt:
appdirs==1.4.3
bcrypt==3.1.3
beautifulsoup4==4.6.0
cffi==1.10.0
click==6.7
django-htmlmin==0.10.0
dominate==2.3.1
Faker==0.7.12
Flask==0.12.2
Flask-BasicAuth==0.2.0
Flask-Bcrypt==0.7.1
Flask-Bootstrap==3.3.7.1
Flask-WTF==0.14.2
html5lib==0.999999999
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
packaging==16.8
pycparser==2.17
pyparsing==2.2.0
python-dateutil==2.6.0
PyYAML==3.12
requests==2.14.2
six==1.10.0
ua-parser==0.7.3
user-agents==1.1.0
uuid==1.30
visitor==0.1.3
webencodings==0.5.1
Werkzeug==0.12.2
WTForms==2.1
I have no beanstalk config file (yet) but I have performed a manual install of: yum install libffi-devel
My first question is how do we determine when we need to add -devel
packages to our deployment? (I fixed a first deployment issue with the installation of the devel package above.)
I assumed all the necessary packages / libraries would be installed with the requirements.txt?
My second question is do you have any clue as to why this deployment is failing? (will hopefully be linked to the first question?)
Thanks in advance for the help,
Stf