macOS High Sierra python3 / pip awscli ruta de instalación confusión

Estaba jugando brew install asciinemay rompió mi instalación de python en macOS High Sierra (10.13.3 (17D47)).

Pero ahora que estoy reinstalando python para awscli a través de pip, no funciona como esperaba.

La confusión:

Las instrucciones de instalación de awscli indican "pip instala los ejecutables en la misma carpeta que contiene el ejecutable de Python. Agregue esta carpeta a su variable PATH". Cuando lo hago ls -al $(which python), obtengo

lrwxr-xr-x  1 notbrain  admin  35 Mar  6 10:35 /usr/local/bin/python -> ../Cellar/python/3.6.4_3/bin/python

Que es lo que esperaría después de una instalación de cerveza. Así que debería agregar /usr/local/Cellar/python/3.6.4_3/bina mi camino, ¿verdad?

Pero aws no se instala allí, está en

~/Library/Python/3.6/bin

Agregando a la confusión, el shebang en el script de entrada de aws está configurado para:

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.

Lo cual está bien, ya que es un enlace simbólico al python 3.6 instalado en brew. Pero, ¿por qué tantas incoherencias? ¿ Dónde está Pip tomando el ~/Library/Pythoncamino? Parece que esa es la extraña cosa específica de macOS.

¿Hay algo en mi sistema que esté configurado incorrectamente para causar esta discrepancia? ¿Es esto una cosa de configuración de instalación de pip que podría cambiar para que funcione con python 3 instalado en homebrew?

Pasos de instalación

Eliminé todos los python instalados por brew e instalé el sistema 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

Luego, una reinstalación de python con 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

Y finalmente, una instalación pip de awscli usando 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

Respuestas (1)

¿Alguna vez resolviste? También estoy un poco atascado tratando de ejecutar awscli. Creo que se agregó a mi ruta porque veo esto: $ echo ${PATH} usr/Library/Python/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

y veo los archivos ejecutables de aws en ese primer directorio en la ruta, pero no se encuentran comandos de aws cuando trato de usarlo

EDITAR: esta es la ruta adicional que finalmente funcionó: export PATH=~/Library/Python/3.7/bin:$PATH

Encontré la solución aquí: https://dev.to/stevoperisic/installing-python3-pip-and-aws-cli-on-macos-sierra-3pea

Sí, ahora lo hago $echo 'export PATH=/usr/local/opt/python/libexec/bin:$PATH' >> ~/.bash_profiley $echo 'export PATH="~/Library/Python/3.7/bin:$PATH"' >> ~/.bash_profile. Parece que es la diferencia entre las herramientas de paquete (pip, etc.) y las rutas de herramientas instaladas por pip. Una pena que no sea más céntrico/mismo lugar.