Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ImportError when running the latest awscli with Python 1.7.15rc1 #3542

Closed
talonx opened this issue Sep 5, 2018 · 24 comments
Closed

ImportError when running the latest awscli with Python 1.7.15rc1 #3542

talonx opened this issue Sep 5, 2018 · 24 comments
Labels
closing-soon This issue will automatically close in 4 days unless further comments are made. guidance Question that needs advice or information.

Comments

@talonx
Copy link

talonx commented Sep 5, 2018

talonx>% sudo -H pip install awscli   
Collecting awscli
  Using cached https://files.pythonhosted.org/packages/87/59/895121a6278c21e77b2aeddc23bf54b10486f0e641553672b765043834db/awscli-1.16.7-py2.py3-none-any.whl
Requirement already satisfied: docutils>=0.10 in /usr/local/lib/python2.7/dist-packages (from awscli) (0.13.1)
Collecting botocore==1.11.7 (from awscli)
  Using cached https://files.pythonhosted.org/packages/55/fd/99b9962da5e4ed41754aa23a6e030e4b2b844120edcb52a83124dc0af087/botocore-1.11.7-py2.py3-none-any.whl
Requirement already satisfied: PyYAML<=3.13,>=3.10 in /usr/lib/python2.7/dist-packages (from awscli) (3.12)
Requirement already satisfied: rsa<=3.5.0,>=3.1.2 in /usr/local/lib/python2.7/dist-packages (from awscli) (3.4.2)
Requirement already satisfied: colorama<=0.3.9,>=0.2.5 in /usr/lib/python2.7/dist-packages (from awscli) (0.3.7)
Requirement already satisfied: s3transfer<0.2.0,>=0.1.12 in /usr/local/lib/python2.7/dist-packages (from awscli) (0.1.13)
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python2.7/dist-packages (from botocore==1.11.7->awscli) (0.9.3)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1; python_version >= "2.7" in /usr/local/lib/python2.7/dist-packages (from botocore==1.11.7->awscli) (2.6.1)
Requirement already satisfied: urllib3<1.24,>=1.20 in /usr/local/lib/python2.7/dist-packages (from botocore==1.11.7->awscli) (1.22)
Requirement already satisfied: pyasn1>=0.1.3 in /usr/local/lib/python2.7/dist-packages (from rsa<=3.5.0,>=3.1.2->awscli) (0.4.4)
Requirement already satisfied: futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7" in /usr/local/lib/python2.7/dist-packages (from s3transfer<0.2.0,>=0.1.12->awscli) (3.2.0)
Requirement already satisfied: six>=1.5 in /usr/lib/python2.7/dist-packages (from python-dateutil<3.0.0,>=2.1; python_version >= "2.7"->botocore==1.11.7->awscli) (1.11.0)
Installing collected packages: botocore, awscli
Successfully installed awscli-1.16.7 botocore-1.11.7
talonx>% aws
Traceback (most recent call last):
  File "/usr/local/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py", line 19, in <module>
    from botocore.hooks import AliasedEventEmitter
ImportError: cannot import name AliasedEventEmitter

Python 2.7.15rc1 on Ubuntu 18.04.1 LTS

@jdkindy
Copy link

jdkindy commented Sep 7, 2018

Same problem on Amazon Linux 2018.03

Packages were updated today (from /var/log/yum.log):
Sep 07 02:00:09 Updated: python27-botocore-1.10.82-1.67.amzn1.noarch
Sep 07 02:00:11 Updated: aws-cli-1.15.83-1.49.amzn1.noarch

$ aws --version
Traceback (most recent call last):
File "/usr/bin/aws", line 19, in
import awscli.clidriver
File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 19, in
from botocore.hooks import AliasedEventEmitter
ImportError: cannot import name AliasedEventEmitter

It was fixed by downgrading aws-cli and python27-botocore:
python27-botocore-1.8.13-1.66.amzn1.noarch.rpm
aws-cli-1.14.9-1.48.amzn1.noarch.rpm

After downgrade:
$ aws --version
aws-cli/1.14.9 Python/2.7.14 Linux/4.9.85-37.55.amzn1.x86_64 botocore/1.10.49

@niklongstone
Copy link

niklongstone commented Sep 11, 2018

same problem here, fixed with a downgrade:
$ aws --version
aws-cli/1.14.70 Python/2.7.14 Linux/4.14.51-60.38.amzn1.x86_64 botocore/1.10.60

@masahitojp
Copy link

 File "/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py", line 19, in <module>
    from botocore.hooks import AliasedEventEmitter
ImportError: cannot import name AliasedEventEmitter

Apparently it seems to caused that the implementation of botocore has changed

boto/botocore@f8b98a0#diff-155031df2de133bd9d662433e654c09a

@masahitojp
Copy link

https://github.com/aws/aws-cli/commits/develop/awscli/clidriver.py

Well, I already seem to be getting well with this latest version 🤔

@chadawagner
Copy link

We had a similar problem after doing a yum update of aws-cli and python27-botocore. It turned out we also had a pip-installed botocore that was older than the version required by the new aws-cli. Removing (or else updating) the pip version resolved the issue. This might not be the same issue as @talonx reports but perhaps may help others who commented or are reading this thread.

@jphegley
Copy link

Same problem here an running a yum update on the Amazon AMI. Also fixed by downgrading aws-cli.noarch and python27-botocore:

sudo yum downgrade aws-cli.noarch python27-botocore

@jamesls
Copy link
Member

jamesls commented Sep 12, 2018

@talonx It looks like for some reason the versions installed aren't actually being used.

Your output shows pip installing version 1.11.7 of botocore, which had the AliasedEventEmitter: https://github.com/boto/botocore/blob/1.11.7/botocore/hooks.py#L346, so this should work. My guess would be that the botocore that's being imported in the CLI isn't actually v1.11.7.

You could try this to see if the versions match up:

$ python -c "import botocore; print('%s: %s' % (botocore.__file__, botocore.__version__))"

We've also made a few changes since v1.16.7. Are you still seeing this issue on the latest version?

@jamesls
Copy link
Member

jamesls commented Sep 12, 2018

@jdkindy It looks like the same issue in my previous comment, for whatever reason, even though you've installed 1.10.82, that's not the version that's actually being used in the CLI. v1.10.82 of botocore also has the AliasedEventEmitter as shown here so that should work without issue: https://github.com/boto/botocore/blob/1.10.82/botocore/hooks.py#L346

I also confirmed that if I install the CLI in a new virtualenv I'm not seeing any issues with either version affected here:

$ pip install awscli==1.15.83
Collecting awscli==1.15.83
  Downloading https://files.pythonhosted.org/packages/59/d6/94d35bb4a0b90decb9829b0c6ef9d73306ec52993c790d3dfd4be83cd9e3/awscli-1.15.83-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 6.7MB/s
Collecting PyYAML<=3.13,>=3.10 (from awscli==1.15.83)
Collecting docutils>=0.10 (from awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/50/09/c53398e0005b11f7ffb27b7aa720c617aba53be4fb4f4f3f06b9b5c60f28/docutils-0.14-py2-none-any.whl
Collecting botocore==1.10.82 (from awscli==1.15.83)
  Downloading https://files.pythonhosted.org/packages/03/29/89e029b98e4abdc81d3cdffe27aab7eb7e5bfea32d8d2e08227c5b89904b/botocore-1.10.82-py2.py3-none-any.whl (4.5MB)
    100% |████████████████████████████████| 4.5MB 3.8MB/s
Collecting rsa<=3.5.0,>=3.1.2 (from awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/e1/ae/baedc9cb175552e95f3395c43055a6a5e125ae4d48a1d7a924baca83e92e/rsa-3.4.2-py2.py3-none-any.whl
Collecting colorama<=0.3.9,>=0.2.5 (from awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/db/c8/7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/colorama-0.3.9-py2.py3-none-any.whl
Collecting s3transfer<0.2.0,>=0.1.12 (from awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/d7/14/2a0004d487464d120c9fb85313a75cd3d71a7506955be458eebfe19a6b1d/s3transfer-0.1.13-py2.py3-none-any.whl
Collecting jmespath<1.0.0,>=0.7.1 (from botocore==1.10.82->awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/b7/31/05c8d001f7f87f0f07289a5fc0fc3832e9a57f2dbd4d3b0fee70e0d51365/jmespath-0.9.3-py2.py3-none-any.whl
Collecting python-dateutil<3.0.0,>=2.1; python_version >= "2.7" (from botocore==1.10.82->awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl
Collecting pyasn1>=0.1.3 (from rsa<=3.5.0,>=3.1.2->awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/d1/a1/7790cc85db38daa874f6a2e6308131b9953feb1367f2ae2d1123bb93a9f5/pyasn1-0.4.4-py2.py3-none-any.whl
Collecting futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7" (from s3transfer<0.2.0,>=0.1.12->awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1; python_version >= "2.7"->botocore==1.10.82->awscli==1.15.83)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Installing collected packages: PyYAML, docutils, jmespath, six, python-dateutil, botocore, pyasn1, rsa, colorama, futures, s3transfer, awscli
Successfully installed PyYAML-3.13 awscli-1.15.83 botocore-1.10.82 colorama-0.3.9 docutils-0.14 futures-3.2.0 jmespath-0.9.3 pyasn1-0.4.4 python-dateutil-2.7.3 rsa-3.4.2 s3transfer-0.1.13 six-1.11.0
(tmp-ce22f5caa8723ec7) ~/.virtualenvs/tmp-ce22f5caa8723ec7 $ aws --version
aws-cli/1.15.83 Python/2.7.14 Darwin/16.7.0 botocore/1.10.82

@jamesls jamesls added the closing-soon This issue will automatically close in 4 days unless further comments are made. label Sep 12, 2018
@texdc
Copy link

texdc commented Sep 13, 2018

@jamesls test a fresh instance with the Amazon Linux AMI 2018.03.0.20180811 x86_64 HVM AMI and running yum update -y.

@johnbartels
Copy link

@jamesls
you stated:
"Your output shows pip installing version 1.11.7 of botocore, which had the AliasedEventEmitter: https://github.com/boto/botocore/blob/1.11.7/botocore/hooks.py#L346, so this should work. My guess... "

but, this commit(changing name of class 'AliasedEventEmitter' to 'EventAliaser'):
boto/botocore@f8b98a0#diff-155031df2de133bd9d662433e654c09a
was a child of this commit:
boto/botocore@384523c
which was in the 1.11.7 release (unless I am reading things incorrectly)

It seems (as previously mentioned by @masahitojp) that the root cause appears to be coming from botocore.

@netmanuy
Copy link

The update of the botocore installed with pip works to me to solve this issue:

pip install botocore==1.10.82

@gitbisect
Copy link

Running pip install awscli==1.15.83 fixed it for me. The way to validate was to run aws --version before and after the pip install.

@smet-dk
Copy link

smet-dk commented Sep 14, 2018

It seems to me that actually this is all that is needed:
pip install awscli
Takes care of botocore too

@no-response no-response bot closed this as completed Sep 19, 2018
@no-response
Copy link

no-response bot commented Sep 19, 2018

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.

@AnishBAH
Copy link

AnishBAH commented Oct 9, 2018

It seems to me that actually this is all that is needed:
pip install awscli
Takes care of botocore too

#3542 (comment)

So this works, but you have to remove aws-cli via yum first completely. Then when installing the awscli via pip the exact command should be: pip install awscli --ugprade --user After that you have to update the path of the account you're in, and it works.

The only issue then you run into is that the upgrade/update only affects the account in question where its run first. So if you need it to be done globally, you need to look into modifying /etc/profile or profile.d or the ~/.bashrc files of each accounts on the instance in question.

That said, doing all of the above still leads to breakages if you have shell scripts that are leveraged by specific apps like tomcat:

sudo service tomcat restart
/opt/tomcat/bin/setenv.sh: line 4: aws: command not found
/opt/tomcat/bin/setenv.sh: line 5: aws: command not found
/opt/tomcat/bin/setenv.sh: line 6: aws: command not found
/opt/tomcat/bin/setenv.sh: line 7: aws: command not found
/opt/tomcat/bin/setenv.sh: line 8: aws: command not found
/opt/tomcat/bin/setenv.sh: line 12: aws: command not found
/opt/tomcat/bin/setenv.sh: line 13: aws: command not found
Using CATALINA_BASE: /opt/tomcat

and sudo is involved. I have not yet found a way to address this yet.

[Edit]

Easiest path forward would be to grab the latest CLI release and use the explicit boto version stated by looking at the commit ID and installing that (plus uninstalling any previous versions you might get with any other boto packages you might have grabbed in the process). That worked for me.

@always-hii
Copy link

pip install awscli --upgrade worked for me.

I saw a post saying boto requires higher version of awscli so that the error occurs. Upgrade the awscli first and then try it!

@1001b
Copy link

1001b commented Oct 15, 2018

pip install awscli==1.15.83 fixed it for me...

@justnance justnance added the guidance Question that needs advice or information. label Jan 11, 2019
ruecarlo added a commit to ruecarlo/ec2-spot-montecarlo-workshop that referenced this issue Feb 1, 2019
ruecarlo added a commit to ruecarlo/ec2-spot-montecarlo-workshop that referenced this issue Feb 1, 2019
ruecarlo added a commit to ruecarlo/ec2-spot-montecarlo-workshop that referenced this issue Feb 1, 2019
* Changed Dockerfile to avoid creating unnecessary layers for python installation

* Removed github references; Using relative references within the same repo

* fixed issue with template link and bold items in template table

* workers were failing due to missing pip as a dependency. Added pip and flatten the dependencies into a single execution

* Applied same changes to the spotlabworker.sh

* added awscli to dependencies (running into this issue with botocore update aws/aws-cli#3542)

* Adding fix_yahoo_finance to the list of dependencies

* docker image pointing to the fixed repo in dockerhub
@tauqirghani
Copy link

smet-dk solution worked for me
sudo pip install awscli

@CloudSatish
Copy link

smet-dk solution worked for me
sudo pip install awscli

Yes, this worked for me too.

@amyjiwu
Copy link

amyjiwu commented Mar 8, 2019

I had similar issue. It looks like aws cli copy command is working on emr-5.17.0 but not emr-5.20.0. Downgrade the aws-cli.noarch and python27-botocore by running: "$ sudo yum downgrade aws-cli.noarch python27-botocore" did fix the problem.
But after some more testing, I found out emr-5.17.0 or emr-5.20.0 is not the problem. aws cli copy command works on both EMR versions. The problem is in my bootstrap script. I ran "$ sudo pip install boto3", this installation uninstalled botocore-1.10.82 and installed boto3-1.9.109 botocore-1.12.109.
That's why running "$ sudo pip install awscli" also fix the problem. Because it uninstalled botocore-1.12.105 and installed botocore-1.10.82 for you.

@maxfarago
Copy link

Similar problem using MRJob to copy JARs via awscli to AWS EMR 5.19 image version:

+ aws s3 cp s3://mrjob-f239f1a076bbaf65/tmp/assign_tastes.maxfarago.20190308.143848.386468/files/commons-csv-1.1.jar commons-csv-1.1.jar
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 19, in <module>
    from botocore.hooks import AliasedEventEmitter
ImportError: cannot import name AliasedEventEmitter
Command exiting with ret '1'

Fixed by adding the following to runner:

  emr:
    bootstrap:
      - sudo pip-2.7 install awscli --upgrade

@hienntt93
Copy link

I fix it by change the format of two file: ~/.aws/config and ~/.aws/credentials

@rashid199
Copy link

what change you performed on ~/.aws/config and ~/.aws/credentials

@desaijay315
Copy link

This worked for me -

sudo pip-2.7 install awscli --upgrade

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closing-soon This issue will automatically close in 4 days unless further comments are made. guidance Question that needs advice or information.
Projects
None yet
Development

No branches or pull requests