Actualización de Python para su uso con AWS CLI

Estoy intentando usar AWS CLI S3 dentro de la Terminal (Mac OS X v10.6.8) y después de configurar todas las credenciales adecuadas cuando ejecuto los comandos básicos (por ejemplo, aws s3 ls ), no genera nada.

Cuando hago un comando un poco más complicado (p. Ej., aws s3 mb s3://newbucketname ) produce: __init__() keywords must be strings .

Según algunas investigaciones, sospeché que la causa es que Python 2.6.1 está instalado de forma predeterminada, así que descargué v3.3.2, lo instalé y usé la función “Actualizar Shell.com Profile.com” para establecer la variable PATH correcta.

Ahora, con la nueva versión de Python instalada y configurada, sigo obteniendo los mismos resultados. El terminal todavía parece estar usando la versión anterior de Python, a pesar de que la variable $ PATH apunta a la nueva versión (v3.3.2).

Cualquier ayuda sería muy apreciada. Supongo que tiene que ver con que la Terminal no usa la nueva versión de Python y, por lo tanto, la funcionalidad AWS CLI no funciona, pero puede haber una causa diferente de la que no tengo conocimiento.

¡Gracias!

Si instaló aws con el easy_install que venía con Python 2.6, será difícil utilizar Python 2.6; su primera línea será algo como esto:

 #!/usr/bin/python2.6 

Esta línea shebang significa que el script se ejecutará con /usr/bin/python2.6 . Instalar Python 3.3 no cambiará lo que está en /usr/bin/python2.6 . No tiene nada que ver con lo que está en el PATH , o lo que se llama python en el PATH . El PATH solo entra en juego si un script usa /usr/bin/env en la línea shebang. Y, /usr/bin/env python2.6 supuesto, /usr/bin/env python2.6 todavía encontraría Python 2.6. De hecho, incluso /usr/bin/env python todavía encontraría Python 2.6, porque 3.3 no tiene nada llamado python , solo python3 .

Mientras tanto, incluso si logró piratearlo para ejecutarlo con Python 3.3 en su lugar (por ejemplo, cambiando esa primera línea a /Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3 o /usr/bin/env python3 ), eso solo lo haría romper por completo. El script aws requiere que el paquete aws esté instalado en sus paquetes de sitio. Los ha instalado en sus paquetes de sitio 2.6, pero no en sus paquetes de sitio 3.3. (Además de eso, muchos paquetes instalan un código diferente para Python 2.x vs. 3.x, por lo que la secuencia de comandos 2.6 podría no funcionar con el paquete 3.3 incluso si estuviera allí).

De todos modos, la forma correcta de solucionar este problema es desinstalar aws de Python 2.6 y volver a instalarlo para Python 3.3.

Si hubieras usado pip como se recomienda, esto sería trivial:

 pip-2.6 uninstall awscli pip-3.3 install awscli 

Desafortunadamente, debido a que usó easy_install en easy_install lugar, debe desinstalarlo manualmente.

Y realmente, no necesita desinstalar los paquetes, solo los scripts que terminaron en /usr/local/bin o en algún otro lugar de su PATH . Sospecho que rm /usr/local/bin/aws* se encargará de eso, pero tenga cuidado, asegúrese de que no haya nada más instalado allí que comience con aws pero que no sea parte del paquete.

Mientras tanto, para el futuro, instale pip y use eso. Para Python 2.6 de Apple, use sudo easy_install pip para instalarlo. Para Python 3.3, siga las instrucciones en el sitio pip .