2013-09-09 2 views
0

Я пытаюсь использовать AWS CLI S3 в терминале (Mac OS X v10.6.8) и после настройки всех соответствующих учетных данных при запуске основных команд (например, aws s3 ls) он делает ничего не выводить.Обновление Python для использования с AWS CLI

Когда я выполняю несколько более сложную команду (например, aws s3 mb s3://newbucketname), она выдает: __init__() keywords must be strings.

Основываясь на некоторых исследованиях, я подозревал, что причина заключается в том, что Python 2.6.1 установлен по умолчанию, поэтому я загрузил v3.3.2, установил его и использовал функцию Update Shell Profile.command для установки правильной переменной PATH ,

Теперь, когда новая версия Python установлена ​​и настроена, я все равно получаю те же результаты. Терминал по-прежнему использует старую версию Python, несмотря на переменную $ PATH, указывающую на новую версию (v3.3.2).

Любая помощь была бы принята с благодарностью. Я предполагаю, что это связано с тем, что терминал не использует новую версию Python, и поэтому функциональность AWI CLI не работает, но может быть иная причина, о которой я не знаю.

Спасибо!

+0

Во-первых, Python 3.3.2 не должен помещать что-либо под названием 'python' в ваш PATH, только' python3'. И для этого есть веская причина: Python 2.x и Python 3.x - это разные языки. Во-вторых, что на PATH не имеет значения, если скрипты 'aws' не используют' env' в своих линиях shbang (например, '#!/Usr/bin/env python', а не' #!/Usr/bin/python'). – abarnert

+0

Между тем, [домашняя страница] (http://aws.amazon.com/cli/) говорит: «Требуется Python 2.6 или выше». И 2.6.1 - 2.6 или выше. Итак ... что заставляет вас думать, что это проблема? – abarnert

+0

Наконец, как вы его установили? Если вы установили его с помощью 'pip' (как рекомендовано), он будет явно настроен для соответствующей версии Python -' pip-2.6' предоставит вам Python 2.6 'aws', а' pip-3.3' предоставит вам Python 3.3 'aws'. В этом случае вы должны иметь возможность просто «pip-2.6 удалить aws», затем «pip-3.3 install aws», и все будет в порядке. – abarnert

ответ

2

Если вы установили aws с easy_install который поставляется вместе с Python 2.6, он будет жестко использовать Python 2.6-первая строка будет выглядеть примерно так:

#!/usr/bin/python2.6 

Это shebang line означает, что сценарий будет выполняться с /usr/bin/python2.6. Установка Python 3.3 не изменит то, что находится на /usr/bin/python2.6. Это не имеет никакого отношения к тому, что находится на PATH, или то, что первое, что называется python, находится на PATH. PATH только вступает в игру, если сценарий использует /usr/bin/env на линии shebang. И /usr/bin/env python2.6, конечно, все равно найдет Python 2.6. Фактически, даже /usr/bin/env python все равно найдет Python 2.6, потому что 3.3 не имеет ничего имени python, всего python3.

Между тем, даже если вам удалось взломать его вместо Python 3.3 (например, изменив эту первую строку на /Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3 или /usr/bin/env python3), это просто заставило бы ее полностью сломаться. Сценарий aws требует, чтобы пакет aws был установлен в ваши пакеты сайтов. Вы установили их в свои сайты-сайты 2.6, но не на свои 3,3-сайты. (Кроме того, многие пакеты устанавливают другой код для Python 2.x по сравнению с 3.x, поэтому скрипт 2.6 может работать не с пакетом 3.3, даже если он был там.)

В любом случае, правильный путь исправить это, чтобы удалить aws из Python 2.6 и переустановить его для Python 3.3.

Если бы вы использовали pip в соответствии с рекомендациями, это было бы тривиально:

pip-2.6 uninstall awscli 
pip-3.3 install awscli 

К сожалению, потому что вы использовали easy_install вместо этого, вы должны удалить его вручную.

И действительно, вам не нужно удалять пакеты, просто скрипты, которые оказались в /usr/local/bin или где-то еще на вашем PATH.Я подозреваю, что rm /usr/local/bin/aws* позаботится об этом, но будьте осторожны - убедитесь, что там ничего не установлено, которое начинается с aws, но не является частью пакета.

Между тем, в будущем установите pip и используйте это. Для Apple Python 2.6 используйте sudo easy_install pip, чтобы установить его. Для Python 3.3 следуйте инструкциям на сайте pip.

+0

Это сработало, спасибо за вашу помощь, я очень ценю это! – dader

Смежные вопросы