awscli не додано до шляху після встановлення


78

Я встановив aws cli відповідно до офіційних інструкцій Amazon.

sudo pip install awscli

Однак awsна моєму шляху ніде немає. Здається, установка була успішною. Є декілька файлів, розташованих за адресою /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli, однак виконуваних файлів з назвами немає aws. Моя версія python - 3.3.4, моя версія pip - 1.5.4, і ця команда виконується в OS X 10.9. Що може бути не так?

Дякую!


Ви можете імпортувати? ти перевіряв, чи бібліотека в PYTHONPATH?
Шон Чжан,

Чому ви використовували судо? Це було дійсно потрібно?
CGTheLegend

Відповіді:


113

Удосконалення відповіді ОП

Оператор відповів на власне запитання, але точне розташування виконуваного файлу, швидше за все, буде іншим, ніж таким самим. Отже, давайте розберемо ЧОМУ його рішення працювало, щоб ви могли застосувати його до себе.

З проблеми

Є кілька файлів, розташованих за адресою /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli, однак немає виконуваних файлів з іменем aws.

З розчину

Рішенням було додати /Library/Frameworks/Python.framework/Versions/3.3/binдо мого ШЛЯХУ.

Давайте чомусь навчимось

Порівняйте ці шляхи, щоб знайти їх спільність:

/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli
/Library/Frameworks/Python.framework/Versions/3.3/bin

Зверніть увагу, що вони розходяться на libпроти bin. І враховуйте, що в ОП зазначено: « немає виконуваних файлів з іменем aws». Це підводить нас до наших перших уроків навчання:

  • Виконавчі libфайли, як правило, відсутні в папках.
  • Шукайте binпапки, які мають спільний родовід.

У цьому випадку я б запропонував шукати binпапки за допомогою:

find /Library/Frameworks/Python.framework -type d -name bin

Але, якщо ви збираєтеся це зробити, ви можете просто шукати свій виконуваний файл за допомогою:

find /Library/Frameworks/Python.framework -type f -perm -100 -name aws
# the `-` in `perm -100` means not an exact match of 100
# but any octal that includes 100

Але почекай

Як ОП знав, як виглядати в них /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/?

Найпростішою відповіддю є також наш наступний навчальний урок:

  • Запитайте свого python, де що встановлено.

Ось як я це роблю:

$ python -c 'import awscli; print(awscli)'
<module 'awscli' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/awscli/__init__.pyc'>

$ python3 -c 'import awscli; print(awscli)'
<module 'awscli' from '/System/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/awscli/__init__.py'>

У мене є 2 Pythons, і жоден з них не використовує однакові шляхи або навіть шаблони шляхів, як OP.

Застосовуйте те, що ми дізналися

$ find /System/Library/Frameworks/Python.framework -type d -name bin
/System/Library/Frameworks/Python.framework/Versions/2.7/bin
/System/Library/Frameworks/Python.framework/Versions/3.6/bin

$ find /System/Library/Frameworks/Python.framework -type f -perm -100 -name aws
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/aws
/System/Library/Frameworks/Python.framework/Versions/3.6/bin/aws

Як бачите, у мене є 2 binпапки та 2 awsвиконувані файли. Я, мабуть, хочу використовувати версію Python3.6. Однак, якщо я роблю локальну роботу методів спроб і помилок для віддаленої системи, яка використовує версію Python2.7, я хочу використовувати це. І саме тому у мене встановлено 2 версії.


15
Одна з найкращих відповідей, яку я коли-небудь знаходив на Stack Overflow. Дякую!
Пол Яніцкі

2
@VishalDesai Ви відчуваєте, чому я додаю такі речі, як Крок 4, у stackoverflow.com/a/41994024/117471 Так, важко переглянути такий список, коли потрібно швидке рішення. Але вони працюють лише для систем, які точно відповідають авторській. Я пишу такі відповіді ПІСЛЯ того, як я спробував кожну відповідь, яку міг знайти, і нічого не спрацювало. Ці відповіді пов’язані в моєму посібнику з команди DevOps, оскільки у нас є БАГАТО нестандартних систем для підтримки. Я пишу відповіді, які працюють для ВСІХ . Сподіваємось, це працює БІЛЬШЕ з вас . Вибачте, це у вас не вийшло. Поспи трохи.
Бруно Броноскі

2
Вибачення за вчорашній коментар. Другий коментар насправді спрацював для мене. Я трохи поспав, помолодився, і рішення прийшло незабаром після цього.
Vishal Desai

2
@BrunoBronosky дякую за цю відповідь, це добре говорить для людства, коли хтось витрачає свій цінний час, щоб детально пояснити речі для загального блага.
davecoffin

1
@danmux правильний, і нова модель безпеки MacOS хоче, щоб ви --userвстановлювали замість sudoвстановлення. І ось чому python -c 'import awscli; print(awscli)'так важливо. Він виявить цей шлях. Усі відповіді SO повинні пояснювати "як отримати відповідь", а не "це спрацювало для мене". Не критично. Я усвідомлюю, що деякі люди не знають, як робити це дослідження. У такому випадку їх відповідь може допомогти комусь іншому підійти та розширити її, щоб вона стала більш універсальною. Це чудовий приклад тому.
Бруно Броноскі

73

Це працювало для мене на mac:

sudo -H pip install awscli --upgrade --ignore-installed six

1
Це було найпростішим рішенням і найкращим для не настільки нерозумних хлопців, яким це просто потрібно для швидкої роботи.
athul

2
Хто-небудь може пояснити, як це працює? Це спрацювало без жодних проблем
tt_Gantz

1
З якоїсь причини це також працює з pip3 для встановлення версії AWS Python 3.
renatoaraujoc

ЛЕГЕНДА Джерадж! :)
Явар

👍, gracias, для контексту це не спрацювало для мене, оскільки я встановив python під. anaconda3
VelLes

42

З http://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html#awscli-install-osx-path

Для сучасних macos / OSX вам потрібно знайти свій ~/Library/Python/$version/binкаталог і додати його до свого $PATH. Це допоможе вам знайти той, де awsвстановлено.

$ ls -d ~/Library/Python/*/bin/aws
/Users/bbronosky/Library/Python/3.6/bin/aws

Отже, виходячи з цього, я додав цей рядок до свого .bashrc

export PATH=$HOME/Library/Python/3.6/bin:$PATH

24

У ubuntu та встановленому за допомогою pip3 без sudo, правильним місцем для додавання до мого шляху було ~/.local/bin:

export PATH=$HOME/.local/bin:$PATH

10

Рішенням було додати

/Library/Frameworks/Python.framework/Versions/3.3/bin

до мого ШЛЯХУ.


Або де б не знаходився ваш Python (у моєму випадку це було /opt/local/Library/Frameworks/Python.framework/Versions/3.4)
Євген

2
Це ДУЖЕ «егоїстичний» вибір відповідей. Це насправді нічого не робить для громади.
Бруно Броноскі

Я взяв свою відповідь і пояснив це в stackoverflow.com/a/42984351/117471
Бруно Bronosky

9

Можна використовувати pip show awscliдля пошуку місця встановлення.

$ pip show awscli
Name: awscli
Version: 1.16.94
Summary: Universal Command Line Environment for AWS.
Home-page: http://aws.amazon.com/cli/
Author: Amazon Web Services
Author-email: UNKNOWN
License: Apache License 2.0
Location: /root/.local/lib/python2.7/site-packages
Requires: s3transfer, colorama, rsa, docutils, botocore, PyYAML
Required-by:

1
Дякую, цей допоміг швидко його звузити :).
Джон Хамфріс - w00te

3

Я перейшов з OSX 10.7 на OSX 10.9, а потім моя установка aws більше не працювала.

Я спостерігав такі помилки:

$ pip
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
working_set.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: pip==1.5.5

Рішення про те, що оновлення операційної системи змінило дозволи.

Підказка про роздачу:

sudo pip <--- спрацював

pip <--- не вдалося

Отже, я зробив це:

sudo chmod -R a+r /Library/Python/

а потім згодом я можу знову використовувати команди aws.

Не впевнений, чи це щось корисне для інших, але я вирішив, що кину це в суміш.


2

При встановленні у virtualenv: 'pip install awscli' (без sudo) добре працював на OS X; але не у версії 6.6 CentOS, наприклад, "aws" нічого не знайшов. Рішення:

chmod u+x /PATH-TO-YOUR-VIRTUALENV/bin/aws

1

Відредагуйте paths файл безпосередньо, якщо у вас є права адміністратора.

Безумовно, зверніться до верхньої відповіді, якщо у вас немає прав адміністратора, але якщо у вас є, то я настійно рекомендую безпосередньо редагувати pathsфайли, розташовані за адресою/etc/paths .

Скористайтеся улюбленим редактором і просто вставте потрібний шлях у новий рядок:

Зразок pathsфайлу:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Users/username/Library/Python/3.6/bin #new path added here at bottom of file

Вставте зверху або внизу або в будь-якому порядку, в якому ви хотіли б, щоб місця, де шукаються двійкові файли (якщо є двійкові файли з повторюваними іменами).

Використання pathsфайлу економить клопоти із запам’ятовуванням синтаксису конкатенації або потенційну проблему, якщо ви пишете несправний експорт.


1

Зазвичай я копіюю виконуваний файл в / usr / local / bin

cp $(find / -name aws) /usr/local/bin

Чудова відповідь! Дякую!
Humanier

У моєму випадку aws був у, /usr/binя скопіював його звідти.
Dnyaneshwar Harer


0

Windows, мабуть, тут меншість, але додавання нижче до мого PATH спрацювало для мене. Для довідки я встановив CLI через pip:

C:\Python27\Scripts

0

У мене була подібна проблема з Windows 10. Мені довелося додати нижче до PATHзмінних

Для Python :

C:\Users\kumar\AppData\Local\Programs\Python\Python37\  

Для PIP :

C:\Users\kumar\AppData\Local\Programs\Python\Python37\Scripts\

Щоб awscli працював:

C:\Users\kumar\AppData\Roaming\Python\Python37\Scripts

0

перевірте свою версію python, але я здогадався, що ви використовуєте python 3.3

експортувати PATH = $ HOME / Library / Python / 3.3 / bin: $ PATH



-1

Просто завантажте та інсталятор MSI (64 або 32-бітний) Встановіть або оновіть AWS CLI версії 2 в Windows за допомогою інсталятора MSI

Після встановлення Ви можете отримати помилку "" aws "" не розпізнається як внутрішня чи зовнішня команда, операційна програма або пакетний файл. "

Просто перевірте змінну середовища, ім'я змінної має бути 'PATH' і поставте значення "C: \ Program Files \ Amazon \ AWSCLIV2". Закрийте вікно командного рядка та відкрийте його знову. Проблема буде вирішена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.