aws cli en cygwin: cómo limpiar las diferencias en las ventanas y los caminos de estilo cygwin

Sospecho que esta es mi ineptitud para corregir correctamente las variables del camino, pero estoy perdido.

He instalado el aws cli usando pip en cygwin.

pip install awscli 

Tengo dos entornos de Python … una distribución de Windows Anaconda, y la versión que cygwin puede instalar para usted.

 which python > /usr/bin/python where python > C:\cygwin64\bin\python > C:\windows-style-path-to-anaconda\python.exe 

cuando trato de correr aws cli

 aws --version > C:\windows-style-path-to-anaconda\python.exe: can't open file > 'cygdrive/c/cygdrive-style-path-to-anaconda/Scripts/aws': > [Errno 2] No such file or directory' 

He intentado agregar la ruta a aws a mi variable de ruta de Windows. Sin suerte.

He intentado agregar esto a mi .bashrc

 export PATH="$PATH:/cygdrive/c/cygdrive-style-path-to-anaconda/Scripts" 

Sin suerte.

He intentado modificar los ‘aws’ que Python está intentando ejecutar. Primero modifiqué el #! para apuntar a la python cygwin en lugar de la ventana python.

 #!c:\cygwin64\bin\python 

luego podría encontrar el archivo ‘aws’ para ejecutar … pero no pudo encontrar ninguno de los archivos para importar … ‘awscli.clidriver’, ‘botocore._’, etc.

Intenté modificar las variables de mi ruta para señalar la ubicación de estos … anaconda / Lib / site-packages … Incluso intenté hacer un sys.path.insert (1, ruta) en el archivo ‘aws’ en sí mismo. .. solucionó ese problema pero todos los archivos que cargaba buscaban en otros lugares y no los encontraban, y era demasiadas cosas para alterarlas una por una en los archivos aws .py.

Esto es lo que funciona … en cygwin …

 cd /cygdrive/c/cygwin-path-to-anaconda/Scripts ./aws --version > aws-cli/1.10.26 Python/2.7.11 Windows/7 botocore/1.4.17 

Pero tiene que haber una mejor manera, ¿verdad? ya sea…

  • Poner las variables de mi camino bien definidas

  • instale aws cli en el directorio pygon de cygwin en lugar del entorno anaconda de windows

desafortunadamente, la desinstalación de pip simplemente se cuelga tratando de eliminar awscli, y no sé cómo forzarlo a usar el python cygwin si pudiera desinstalar / reinstalar. Y después de un montón de bashs para arreglar mis variables de ruta, estoy perdido.

Cualquier consejo apreciado.

Al ejecutar pip install awscli desde cygwin, puede instalar awscli en la instalación de Anaconda Python de Window, en lugar de hacerlo en Python de Cygwin (que es lo que desea). Luego, al ejecutar aws , obtendrá un error que aws que no se puede encontrar el ejecutable de aws . La solución que encontré fue instalar python / pip dentro de cygwin siguiendo los siguientes comandos de bash desde el shell cygwin:

 pip uninstall awscli wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg install apt-cyg /bin apt-cyg install python wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip install awscli 

Asegúrate de tener instalado wget en cygwin.

Después de un MUCHO tiempo dedicado a esto, encontré una solución que funciona.

El problema principal es que el cygwin no vino con Python instalado y no sabe dónde encontrar la versión de Windows Anaconda existente en su máquina. Esto se puede verificar ejecutando which python desde dentro de cygwin; no pudo encontrar dónde se guarda python. Tenga en cuenta que esto puede ser confuso porque la ejecución de pip install awscli probablemente no arroja un mensaje de error. Cygwin realmente instala awscli en la instalación de Python en la Anaconda de Windows (me parece extraño ya que no ejecutamos conda install awscli ).

SIN EMBARGO, en lugar de intentar apuntar a cygwin a la versión ya instalada de Anaconda python en su máquina, le ahorrará un montón de dolor de cabeza con tan solo instalar una instancia de python específica para cygwin. Los pasos para hacerlo están documentados aquí: http://wiki.fast.ai/index.php/Awscli_in_cygwin

  1. pip uninstall awscli
  2. wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
  3. install apt-cyg /bin
  4. apt-cyg install python
  5. wget https://bootstrap.pypa.io/get-pip.py
  6. python get-pip.py
  7. pip install awscli

… Tenga en cuenta, sin embargo, que el primer comando pip uninstall awscli “colgó” para mí. Así que solo salga de él usando quit() y continúe con los otros en orden.

Puede comprobar que todo funcionó si ejecuta which python en cygwin y apunta a la versión de cygin (es decir, / usr / bin / python, a diferencia de: /users/…/Anaconda2/).

Además, si está preguntando esto junto con ver el video de configuración del curso fast.ai ( http://course.fast.ai/lessons/aws.html ), el siguiente paso es CRÍTICO para los usuarios de Windows: Cuando descarga todos los scripts de shell desde la carpeta de configuración de Github ( https://github.com/fastai/courses/tree/master/setup ), Windows agrega automáticamente los terminadores de línea CRLF. Por lo tanto, en cygwin, ejecute los siguientes comandos para eliminar estos finales de línea:

  1. apt-cyg install dos2unix
  2. dos2unix setup_p2.sh
  3. dos2unix setup_instance.sh
  4. entonces finalmente, bash setup_p2.sh

Esto debería funcionar.

Agregando mi corrección, para las personas que enfrentan este problema en Anacond2

Después de instalar anaconda2, ejecute este comando en cygwin (suponga que lo ha instalado en c: \ anaconda2)

 echo "PATH=\$PATH:/cygdrive/c/anaconda2" >> .bash_profile echo "PATH=\$PATH:/cygdrive/c/anaconda2/Scripts" >> .bash_profile source .bash_profile 

Más información disponible en https://www.davidbaumgold.com/tutorials/set-up-python-windows/#installing-cygwin

Gracias a matzeri en los comentarios anteriores por guiarme a la solución.

El problema fue que cygwin tenía su propia versión de python … pero no pip … así que cuando usé “pip install” en cygwin para instalar awscli, fue windows / anaconda pip. la solución no consistía en arreglar caminos, como matzeri señaló, nunca resolvería eso con los caminos … eran estas dos líneas …

 python -m ensurepip # install a cygwin pip pip install awscli # to install awscli for cygwin