aws / aws-elastic-beanstalk-cli

The EB CLI is a command line interface for Elastic Beanstalk that provides interactive commands that simplify creating, updating and monitoring environments from a local repository.
Apache License 2.0
161 stars 78 forks source link

requirements.txt should specify urllib3 version 1.26.5 or <2.0.0 #385

Closed pkovanen closed 1 year ago

pkovanen commented 1 year ago

Description

Our build stopped working when Urllib3 2.0.0 was published on April 26. awsebcli requires urllib3>=1.26.5, however botocore's dependence is urllib3>=1.25.4,<1.27.

Now the build exits with error: ERROR: botocore 1.29.121 has requirement urllib3<1.27,>=1.25.4, but you'll have urllib3 2.0.0 which is incompatible.

Steps to reproduce

.gitlab-ci.yml script: - pip install awsebcli

Additional environment details (Ex: Windows, Mac, Amazon Linux etc)

  1. OS: gitlab-runner
  2. EBCLI version: 3.20.6
egwynn commented 1 year ago

I had to update my CI job with the following in order to get it to work again for the time being:

pip install awsebcli --upgrade "urllib3 < 2.0"

ETA: Our CI process is using the legacy cimg/node:12.18 docker image from CircleCI. The python setup steps are:

sudo apt-get -y -qq update
sudo apt-get install python3-pip python3-dev build-essential 
sudo pip3 install awsebcli --upgrade "urllib3 < 2.0"
pquentin commented 1 year ago

When I run pip install awsebcli in a clean virtual environment with pip 23.1.2 I end up with urllib3 1.26.15 as it's compatible with requests 2.26.0 and botocore 1.29.99 that are downloaded given the constraints of https://github.com/aws/aws-elastic-beanstalk-cli/blob/master/requirements.txt.

Update your pip to a more recent version, you'll see that it will do the right thing.

egwynn commented 1 year ago

FWIW our CI process is using the legacy cimg/node:12.18 docker image from CircleCI. The python setup steps are:

sudo apt-get -y -qq update
sudo apt-get install python3-pip python3-dev build-essential 
sudo pip3 install awsebcli --upgrade "urllib3 < 2.0"

I updated my comment above to reflect this for the benefit of future readers.

henhal commented 1 year ago

Just spent half my day with this. :( I'm not sure what the "best" way is to solve this, but I ended up doing

pip install 'urllib3>=1.26.5,<2' --user
pip install awsebcli --upgrade --user

I see above that it seems possible to state requirements for a dependency directly on the pip install of awsebcli? I guess that's prettier, but I'm not at all a python guy so I'm a bit lost when this happens.

I guess the correct solution is that awsebcl itself states urllib3>=1.26.5,<2 and releases a 3.20.7? 🙏 I created a PR: https://github.com/aws/aws-elastic-beanstalk-cli/pull/401