2016-05-10 36 views
7

Ho il sospetto che questa è la mia inettitudine a ottenere variabili di percorso giusto insieme, ma io sono in perdita.AWS cli in cygwin - come pulire le differenze di finestre e percorsi di stile Cygwin

Ho installato AWS cli utilizzando pip in Cygwin.

pip install awscli 

Ho due ambienti python ... una distribuzione di Windows anaconda e la versione che cygwin può installare per voi.

which python 
> /usr/bin/python 

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

quando provo a fare funzionare 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' 

Ho provato ad aggiungere il percorso di AWS per la mia variabile finestre percorso. Senza fortuna.

Ho provato ad aggiungere questo al mio .bashrc

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

Nessuna fortuna.

Ho provato la modifica dei 'AWS' che Python sta cercando di correre. Innanzitutto ho modificato il #! puntare al python cygwin al posto di Windows Python.

#!c:\cygwin64\bin\python 

allora ha trovato il file 'aws' a correre ... ma non riusciva a trovare uno qualsiasi dei file da importare ... 'awscli.clidriver', 'botocore._', etc.

Ho provato a modificare le variabili del mio percorso per indicare la posizione di questi ... anaconda/Lib/site-packages ... Ho anche provato a fare un sys.path.insert (1, path) negli 'aws' file stesso .... ha risolto il problema ma ogni singolo file caricato stava cercando in altri posti e non trovandoli, ed erano troppe cose da fare a pezzi uno alla volta nei file aws .py.

ecco che tipo di opere ... in 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 

ma ci deve essere un modo migliore, giusto? o ...

  • ottenere il mio variabili di percorso situato proprio

  • ottenere l'AWS cli installato nella directory cygwin pitone invece di ambiente Windows anaconda

purtroppo, disinstallare pip solo si blocca cercando di rimuovere awscli, e non so come forzarlo a usare cygwin python se potessi anche disinstallarlo/reinstallarlo. E dopo un sacco di tentativi di fissare le variabili del mio percorso, sono in perdita.

Qualche consiglio apprezzato.

+0

Qual è l'output di 'PATH ="/usr/bin "; aws --version'? – matzeri

+1

Come si hanno due python, è necessario organizzare il PERCORSO ogni volta in modo che non interferiscano tra loro. Non mettere cygwin nel PATH quando hai bisogno di usare il python di Windows e non mettere il python di Windows nel PATH quando hai bisogno di Cygwin. PS: 'pip install awscli' funziona anche con cygwin pyhton3 dopo aver installato pip. – matzeri

+0

PATH = "/ usr/bin"; aws --version -> -bash: aws: comando non trovato – kmh

risposta

0

Grazie alla matzeri nei commenti sopra per me virando per la correzione.

Il problema era che cygwin aveva la propria versione python ... ma non pip ... quindi quando ho usato "pip install" in cygwin per installare awscli, era il pip di windows/anaconda. la soluzione non ha comportato la fissazione dei percorsi, come indicato da Matzeri, non risolverebbe mai questo con i percorsi ... erano queste due linee ...

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

Aggiunta la mia correzione, per le persone che si trovano ad affrontare questo problema in Anacond2

Dopo aver installato anaconda2, esegue questo comando in Cygwin (si supponga di aver installato in c: \ anaconda2)

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

Maggiori informazioni disponibili al https://www.davidbaumgold.com/tutorials/set-up-python-windows/#installing-cygwin

11

Quando si esegue pip install awscli da cygwin, si può installare awscli in Anaconda Python iNSTALLAZIONE della finestra on, anziché in Cygwin's Python (che è quello che vuoi). Quindi, quando si esegue aws, si otterrà un errore che non è possibile trovare l'eseguibile aws. La soluzione che ho trovato è stata l'installazione di python/pip all'interno Cygwin bash seguendo sotto i comandi da 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 

Accertarsi di aver installato wget in Cygwin.

+1

Potrebbe essere necessario invocare esplicitamente il pip di cygwin (al contrario di Anaconda): '/ cygdrive/c/cygwin64/bin/pip' – ChaimKut

4

Dopo un sacco di tempo trascorso su questo, ho trovato una soluzione che funziona.

Il problema principale è che Cygwin non è stato installato con python e non sa dove trovare la versione di Windows Anaconda esistente sul computer. Questo può essere verificato eseguendo which python da cygwin - non è stato possibile trovare dove viene salvato python. Si noti che questo può essere fonte di confusione perché l'esecuzione di pip install awscli probabilmente non genera un messaggio di errore. Cygwin installa in realtà awscli nell'installazione Anaconda di Python di Windows (trovo questo strano dato che non abbiamo eseguito conda install awscli).

TUTTAVIA, invece di provare a puntare cygwin alla versione già installata di Anaconda python sulla tua macchina, ti farà risparmiare un sacco di mal di testa semplicemente installando un'istanza di python specifica per cygwin. La procedura per farlo sono documentati qui: 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

... Si noti, tuttavia, che il primo comando pip uninstall awscli "riattaccato" per me. Quindi basta scappare usando quit() e continuare con gli altri in ordine.

È possibile controllare che tutto funzioni se si esegue which python in cygwin e punta alla versione di cygin (cioè/usr/bin/python, in opposizione a: /users/.../Anaconda2/).

Inoltre, se vi capita di chiedere questo in concomitanza con la visione del video di installazione per il veloce.al corso (http://course.fast.ai/lessons/aws.html), quindi il passaggio successivo è CRITICO per utenti Windows: quando si scaricano tutti gli script della shell dalla cartella di installazione di Github (https://github.com/fastai/courses/tree/master/setup), Windows aggiunge automaticamente i terminatori di riga CRLF! Pertanto, in cygwin, eseguire i seguenti comandi per rimuovere questi fine riga:

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

Questo dovrebbe fare il trucco.