AWS errors when installing requirements with python 2.7 when EB environment is python 3.6

[亡魂溺海] 提交于 2019-12-08 07:41:12

问题


How do I get the aWS EB instance to use the python 3 version that is already installed on the instance? I can't get a new environment running with Python 3.6 running Django 2.1+.

Local (not in virtual env):

which python -> /usr/local/bin/python
python -V -> Python 2.7.15
which python3 -> /usr/local/bin/python3
python3 -V -> Python 3.6.5
which pip -> /usr/local/bin/pip
pip -V -> pip 18.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)`
which pip3 -> /usr/local/bin/pip3
pip3 -V -> pip 18.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

Local in virtualenv mstFirst:

which python -> /Users/me/.virtualenvs/mstFirst/bin/python
which python3 -> /Users/me/.virtualenvs/mstFirst/bin/python
python -V -> Python 3.6.5
python3 -V -> Python 3.6.5
which pip -> /Users/me/.virtualenvs/mstFirst/bin/pip
which pip3 -> /Users/me/.virtualenvs/mstFirst/bin/pip3
pip -V -> pip 18.0 from /Users/me/.virtualenvs/mstFirst/lib/python3.6/site-packages/pip (python 3.6)
pip3 -V -> pip 18.0 from /Users/me/.virtualenvs/mstFirst/lib/python3.6/site-packages/pip (python 3.6)
aws --version -> aws-cli/1.16.9 Python/3.6.5 Darwin/17.7.0 botocore/1.11.9
eb --version -> EB CLI 3.14.4 (Python 3.6.5)
eb -list -> * mst-p3
eb -config ->
  ApplicationName: mst
  DateUpdated: 2018-09-07 02:15:51+00:00
  EnvironmentName: mst-p3
  PlatformArn: arn:aws:elasticbeanstalk:us-east-1::platform/Python 3.6 running on 64bit Amazon Linux/2.7.3
  settings: …

Files:

".elasticbeanstalk/config.yml"

branch-defaults:
  master:
    environment: mst-p3
environment-defaults:
  mst-p3: …
global:
  application_name: mst
  default_platform: 64bit Amazon Linux 2018.03 v2.7.3 running Python 3.6
  default_region: us-east-1
  workspace_type: Application
…

".ebextensions/01_packages.config"

packages:
  yum:
    git: []
    python36: []
    python36-devel: []
    postgresql93: []
    postgresql93-devel: []
    mod24_ssl : []

commands:
  pip_upgrade:
    command: /opt/python/run/venv/bin/pip install --upgrade pip
    ignoreErrors: false

Error when trying eb deploy, which points to wrong python version (2.7) while trying to run pip install -r requirements.py:

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-jt3_s4in/slugger/
2018-09-07 03:28:35,315 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 186, 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)

Remote Instance ssh (eb ssh):

pyhthon -V -> Python 2.7.14
pyhthon3 -V -> Python 3.6.5

Things I've tried:

  • Replacing the environment AMI with a current version and rebuilding per https://stackoverflow.com/a/47157777/1234721 , but the environment errors with an AMI of "ami-0ff8a91507f77f867" for "Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type"
  • trying to hook into the YAML config to switch the python versions
  • re-init using eb init
  • verified my ssh keys per : https://stackoverflow.com/a/51669982/1234721

回答1:


Your problem is caused by the wrong version of pip (Python 3.x pip) in the Python 2.7 installation.

The AWS tools are written for Python 2.7

I am also not sure if aws cli or eb has been completely tested with pip 18.

Uninstall pip from the Python 2 directory. Uninstall eb

Reinstall.

I recommend installing the AWS CLI first even if you are not using it. This will ensure that your Python environment is setup correct for AWS tools.

You did not specify the OS, so I cannot give you OS specific uninstall / install directions.




回答2:


Using eb init definitely works:

eb init -p "64bit Amazon Linux 2017.09 v2.7.3 running Python 3.6" ...

Then just remove all the python stuff from your .ebextension files.

For the yum section, all I use is:

packages:
  yum:
    postgresql94-devel: []

There should be no need to upgrade pip.



来源:https://stackoverflow.com/questions/52215189/aws-errors-when-installing-requirements-with-python-2-7-when-eb-environment-is-p

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!