尝试将Flask应用程序部署到AWS Elastic Beanstalk时出错

时间:2017-01-29 15:57:12

标签: python amazon-web-services flask pip

我正在尝试使用AWS Elastic Beanstalk部署Flask应用程序,但遗憾的是遇到了以下错误。让我感到困惑的是,我的虚拟环境和本地机器中当前版本的pip是9.0.1,所以我不确定它为什么会拿起7.1.2。

Command "/opt/python/run/venv/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-L32BGc/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-nO55i_-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/python/run/venv/include/site/python2.7/cffi" failed with error code 1 in /tmp/pip-build-L32BGc/cffi
  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-01-29 15:42:34,743 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)

1 个答案:

答案 0 :(得分:0)

这是因为pip版本太旧了。您可以添加.ebextensions来解决此问题。

  1. 在应用的根文件夹中添加.ebextensions文件夹
  2. 在其中放入pip.config文件,内容为:
  3. 
    commands:
      update_pip:
      command: "/opt/python/run/venv/bin/pip install --upgrade pip"
    
    1. 再次运行eb deploy,它将被解析。