carefreepineapple
carefreepineapple

Reputation: 21

awscli fails to execute within python virtual environment

I'm really bad with python. This is on a CentOS7 vm

Problem:

When trying to use awscli in a python virtual environment, I get an error:

(python3ve) [user@ncwv-jlnxnode01 ~]$ aws --version
Traceback (most recent call last):
  File "/home/user/venv/python3ve/bin/aws", line 27, in 
    sys.exit(main())
  File "/home/user/venv/python3ve/bin/aws", line 23, in main
    return awscli.clidriver.main()
  File "/home/user/venv/python3ve/lib64/python3.6/site-packages/awscli/clidriver.py", line 69, in main
    driver = create_clidriver()
  File "/home/user/venv/python3ve/lib64/python3.6/site-packages/awscli/clidriver.py", line 79, in create_clidriver
    event_hooks=session.get_component('event_emitter'))
  File "/home/user/venv/python3ve/lib64/python3.6/site-packages/awscli/plugin.py", line 44, in load_plugins
    modules = _import_plugins(plugin_mapping)
  File "/home/user/venv/python3ve/lib64/python3.6/site-packages/awscli/plugin.py", line 61, in _import_plugins
    module = __import__(path, fromlist=[module])
ModuleNotFoundError: No module named '/root/'

ultimately i'm trying to put together a step by step method in an ansible playbook for not only installing awscli, but also awscli-plugin-endpoint, so i'd prefer to install this through pip instead of the centos repos and instead of just downloading the binaries.

Installation Steps:

  1. remove python3 and everything python3 related on the system.
~$ rm -rf ~/venv/python3ve/
~$ sudo yum remove -y python3
~$ sudo yum autoremove -y
~$ sudo find / -name "python3*" > ~/file
~$ sudo xargs rm -r ~/file  (missing the arrow because stackoverflow formatting is freaking out with it)
  1. install
~$ sudo yum install -y python3
~$ /usr/bin/python3 -m venv ~/venv/python3ve
~$ source ~/venv/python3ve/bin/activate
~$ ~/venv/python3ve/bin/python3 -m pip install --upgrade pip
~$ ~/venv/python3ve/bin/python3 -m pip install --upgrade awscli
~$ which aws
~/venv/python3ve/bin/aws
~$ aws --version
---output is in the problem description above---

suggestions?

Upvotes: 0

Views: 750

Answers (1)

carefreepineapple
carefreepineapple

Reputation: 21

ultimately found that the error was stemming from my ~/.aws/config which I wasnt removing when I reinstalled. that had a reference to the plugin not yet installed and also the old site-packages path (pre venv)

cli_legacy_plugin_path=/root/.local/lib/python3.6/site-packages/
endpoint = awscli_plugin_endpoint

Once I removed those, it worked fine again.

~$ aws --version
aws-cli/1.24.10 Python/3.6.8 Linux/3.10.0-957.el7.x86_64 botocore/1.26.10

The error was referencing /root/ because of how _import_plugins within /awscli/plugin.py splits the path based on . if present

module = path.rsplit('.', 1)

Upvotes: 1

Related Questions