macOS High Sierra python3 / pip awscli Installationspfad Verwirrung

Ich habe damit herumgespielt brew install asciinemaund meine Python-Installation auf macOS High Sierra (10.13.3 (17D47)) abgebrochen.

Aber jetzt, wo ich Python für das awscli über pip neu installiere, verhält es sich nicht so, wie ich es erwarten würde.

Die Verwirrung:

Die awscli-Installationsanweisungen besagen: „pip installiert ausführbare Dateien in demselben Ordner, der die ausführbare Python-Datei enthält. Fügen Sie diesen Ordner Ihrer PATH-Variablen hinzu.“ Wenn ich es tue ls -al $(which python), bekomme ich

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

Was ich nach einer Brew-Installation erwarten würde. Also sollte ich /usr/local/Cellar/python/3.6.4_3/binmeinen Pfad ergänzen, richtig?

Aber aws wird dort nicht installiert, es ist drin

~/Library/Python/3.6/bin

Was die Verwirrung noch verstärkt - der Shebang im aws-Eingabeskript ist auf Folgendes eingestellt:

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.

Was in Ordnung ist, da es sich um einen symbolischen Link zum brew-installierten Python 3.6 handelt. Aber warum so viele Ungereimtheiten? Wo nimmt Pip den ~/Library/PythonPfad auf? Scheint so, als wäre das eine seltsame MacOS-spezifische Sache.

Gibt es etwas auf meinem System, das falsch eingestellt ist, um diese Diskrepanz zu verursachen? Ist dies eine Pip-Installationskonfiguration, die ich ändern könnte, um mit Homebrew installiertem Python 3 zu arbeiten?

Schritte installieren

Ich habe alle von Brew installierten Pythons entfernt und das System 2.7 installiert:

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

Dann eine Neuinstallation von Python mit 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

Und schließlich eine Pip-Installation von awscli mit 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

Antworten (1)

Hast du jemals gelöst? Ich stecke auch irgendwie fest und versuche, awscli zum Laufen zu bringen. Ich denke, es wurde meinem Pfad hinzugefügt, weil ich Folgendes sehe: $ echo ${PATH} usr/Library/Python/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

und ich sehe die ausführbaren aws-Dateien in diesem ersten Verzeichnis im Pfad, aber es werden keine aws-Befehle gefunden, wenn ich versuche, sie zu verwenden

BEARBEITEN: Dies ist der Pfadzusatz, der endlich funktioniert hat: export PATH=~/Library/Python/3.7/bin:$PATH

Die Lösung habe ich hier gefunden: https://dev.to/stevoperisic/installing-python3-pip-and-aws-cli-on-macos-sierra-3pea

Ja, jetzt tue ich $echo 'export PATH=/usr/local/opt/python/libexec/bin:$PATH' >> ~/.bash_profilees und $echo 'export PATH="~/Library/Python/3.7/bin:$PATH"' >> ~/.bash_profile. Scheint, als wäre es der Unterschied zwischen Paket-Tools (Pip usw.) und Pfaden für von Pip installierte Tools. Schade, dass es nicht zentraler / gleicher Ort ist.