Installing AWS CLI through pip is useful when the command needs to live inside an existing Python-managed workflow instead of the distro package-manager path or the official bundled installer. That approach keeps the CLI in the same package-management path as other Python-based automation and makes it straightforward to upgrade or pin a specific AWS CLI v1 release.
The awscli package published on PyPI installs AWS CLI version 1, not the current bundled AWS CLI version 2. A user-scoped install places the `aws` executable in the Python user bin directory, usually ~/.local/bin on Linux, and the command reads the same ~/.aws/config and ~/.aws/credentials files used by other AWS SDK and CLI workflows.
Current distro-managed Python builds can change whether this method works unchanged. On recent Debian and Ubuntu releases, a system-managed pip can stop the install with externally-managed-environment, and any host that already has AWS CLI v2 can still resolve that other `aws` binary first unless the shell path is checked carefully.
Related: How to install AWS CLI on Ubuntu
Related: How to install AWS CLI on CentOS or Red Hat
Related: How to install AWS CLI on Windows
Steps to install AWS CLI version 1 using pip:
- Confirm that the shell is using Python 3.9 or later and a pip command bound to that interpreter.
$ python3 --version Python 3.12.3 $ python3 -m pip --version pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)
On current distro-managed Python installations, the next step can fail with externally-managed-environment. If that happens, switch to a dedicated Python environment or use the AWS CLI v2 installer instead of forcing packages into the system interpreter.
- Install or update the awscli package in the current user's Python path.
$ python3 -m pip install --upgrade --user awscli Collecting awscli Downloading awscli-1.44.68-py3-none-any.whl.metadata (11 kB) ##### snipped ##### Successfully installed PyYAML-6.0.3 awscli-1.44.68 botocore-1.42.78 colorama-0.4.6 docutils-0.19 jmespath-1.1.0 pyasn1-0.6.3 python-dateutil-2.9.0.post0 rsa-4.7.2 s3transfer-0.16.0 six-1.17.0 urllib3-2.6.3
The PyPI package name is awscli, and this method installs AWS CLI version 1 rather than the separate version 2 bundled installer.
- Prepend the user-local bin directory to PATH when the new aws executable is not yet visible in the current shell.
$ export PATH=~/.local/bin:$PATH $ command -v aws /home/user/.local/bin/aws
Add the same export PATH=~/.local/bin:$PATH line to ~/.profile, ~/.bashrc, or ~/.zshrc when new login shells also need to find the pip-installed binary.
- Check both the resolved binary path and the reported version so the shell is using the pip-installed CLI rather than another aws command earlier in PATH.
$ command -v aws /home/user/.local/bin/aws $ aws --version aws-cli/1.44.68 Python/3.12.3 Linux/6.12.76-linuxkit botocore/1.42.78
AWS CLI versions 1 and 2 use the same aws command name, so the executable path matters as much as the version string during verification.
- Configure credentials and default settings before using the new install against an AWS account.
$ aws configure
- Run a simple signed request after configuration to confirm that the installed CLI can reach AWS with the intended identity.
$ aws sts get-caller-identity { "UserId": "AIDASAMPLEUSERID", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/PlatformOperator" }
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
