Was playing around with brew install asciinema
and it broke my python install on macOS High Sierra (10.13.3 (17D47)).
But now that I'm re-installing python for the awscli via pip, it's not acting like I would expect.
The Confusion:
The awscli install instructions state "pip installs executables to the same folder that contains the Python executable. Add this folder to your PATH variable." When I do ls -al $(which python)
, I get
lrwxr-xr-x 1 notbrain admin 35 Mar 6 10:35 /usr/local/bin/python -> ../Cellar/python/3.6.4_3/bin/python
Which is what I would expect after a brew install. So I should add /usr/local/Cellar/python/3.6.4_3/bin
to my path, right?
But aws does not get installed there, it's in
~/Library/Python/3.6/bin
Adding to the confusion - the shebang in the aws entry script is set to:
17:11:40 notbrain@brian ~/Library/Python/3.6/bin
➜ cat aws
#!/usr/local/opt/python/bin/python3.6
# Copyright 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Which is fine, since it's a symlink to the brew-installed python 3.6. But why so many inconsistencies? Where is pip picking up the ~/Library/Python
path? Seems like that's the odd macOS specific thing.
Is there something on my system that is set incorrectly to cause this discrepancy? Is this a pip install config thing I could change to work with homebrew installed python 3?
Install Steps
I removed all python installed by brew and get the system installed 2.7:
10:20:20 notbrain@brian ~
➜ python --version
Python 2.7.10
10:20:34 notbrain@brian ~
➜ which python
/usr/bin/python
10:20:42 notbrain@brian ~
➜ ll $(which python)
.rwxr-xr-x 66k root 1 Dec 2017 /usr/bin/python
10:21:13 notbrain@brian ~
➜ whereis python
/usr/bin/python
Then a reinstall of python with homebrew:
10:26:17 notbrain@brian ~
➜ brew install python
==> Downloading https://homebrew.bintray.com/bottles/python-3.6.4_3.high_sierra.bottle.tar.gz
Already downloaded: /Users/notbrain/Library/Caches/Homebrew/python-3.6.4_3.high_sierra.bottle.tar.gz
==> Pouring python-3.6.4_3.high_sierra.bottle.tar.gz
==> /usr/local/Cellar/python/3.6.4_3/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.6.4_3/bin --install-lib=/usr/local/lib/
==> /usr/local/Cellar/python/3.6.4_3/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.6.4_3/bin --install-lib=/usr/local/lib/
==> /usr/local/Cellar/python/3.6.4_3/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.6.4_3/bin --install-lib=/usr/local/lib/
==> Caveats
Pip, setuptools, and wheel have been installed. To update them
pip3 install --upgrade pip setuptools wheel
You can install Python packages with
pip3 install <package>
They will install into the site-package directory
/usr/local/lib/python3.6/site-packages
See: https://docs.brew.sh/Homebrew-and-Python
Unversioned symlinks python, python-config, pip etc. pointing to python3,
python3-config, pip3 etc., respectively, have been installed.
If you need Homebrew's Python 2, `brew install python@2`.
==> Summary
🍺 /usr/local/Cellar/python/3.6.4_3: 3,615 files, 56.
10:26:44 notbrain@brian ~
➜ which python
/usr/local/bin/python
And finally, a pip install of awscli using https://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html#awscli-install-osx-pip
10:35:49 notbrain@brian ~
➜ pip install awscli --upgrade --user
Collecting awscli
Using cached awscli-1.14.50-py2.py3-none-any.whl
Collecting docutils>=0.10 (from awscli)
Using cached docutils-0.14-py3-none-any.whl
Collecting colorama<=0.3.7,>=0.2.5 (from awscli)
Using cached colorama-0.3.7-py2.py3-none-any.whl
Collecting s3transfer<0.2.0,>=0.1.12 (from awscli)
Using cached s3transfer-0.1.13-py2.py3-none-any.whl
Collecting botocore==1.9.3 (from awscli)
Using cached botocore-1.9.3-py2.py3-none-any.whl
Collecting rsa<=3.5.0,>=3.1.2 (from awscli)
Using cached rsa-3.4.2-py2.py3-none-any.whl
Collecting PyYAML<=3.12,>=3.10 (from awscli)
Collecting python-dateutil<3.0.0,>=2.1 (from botocore==1.9.3->awscli)
Using cached python_dateutil-2.6.1-py2.py3-none-any.whl
Collecting jmespath<1.0.0,>=0.7.1 (from botocore==1.9.3->awscli)
Using cached jmespath-0.9.3-py2.py3-none-any.whl
Collecting pyasn1>=0.1.3 (from rsa<=3.5.0,>=3.1.2->awscli)
Using cached pyasn1-0.4.2-py2.py3-none-any.whl
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->botocore==1.9.3->awscli)
Using cached six-1.11.0-py2.py3-none-any.whl
Installing collected packages: docutils, colorama, six, python-dateutil, jmespath, botocore, s3transfer, pyasn1, rsa, PyYAML, awscli
Successfully installed PyYAML-3.12 awscli-1.14.50 botocore-1.9.3 colorama-0.3.7 docutils-0.14 jmespath-0.9.3 pyasn1-0.4.2 python-dateutil-2.6.1 rsa-3.4.2 s3transfer-0.1.13 six-1.11.0