2016-05-10 58 views
7

我懷疑這是我無法正確獲取路徑變量,但我很茫然。aws cli在cygwin中 - 如何清理窗口和cygwin樣式路徑中的差異

我已經在cygwin中使用pip安裝了aws cli。

pip install awscli 

我有兩個python環境...一個windows anaconda發行版,並且cygwin的版本可以爲你安裝。

which python 
> /usr/bin/python 

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

,當我嘗試運行CLI AWS

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' 

我嘗試添加到我的Windows路徑變量路徑AWS。沒有運氣。

我試着加入這個對我的.bashrc

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

沒有運氣。

我試着修改python試圖運行的'aws'。首先我修改了#!指向cygwin python而不是windows python。

#!c:\cygwin64\bin\python 

那麼它可以找到文件「AWS」運行...但它無法找到任何文件的導入......「awscli.clidriver」,「botocore._」,等等。我試圖修改我的路徑變量指向這些... anaconda/Lib/site-packages的位置...我甚至嘗試在'aws'中做一個sys.path.insert(1,路徑)文件本身....它解決了這個問題,但它加載的每一個文件都在其他地方查找,而沒有找到它們,並且在aws .py文件中一次一個地搞亂了太多東西。

這裏是什麼樣的作品?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 

,但必須有一個更好的辦法,對不對?要麼...

  • 讓我的路徑變量設置正確

  • 獲得AWS CLI安裝在cygwin的python目錄,而不是Windows蟒蛇環境

不幸的是,PIP卸載剛掛起試圖刪除awscli,我不知道如何強制它使用cygwin python,如果我甚至可以卸載/重新安裝。經過一系列的修復我的路徑變量的嘗試之後,我不知所措。

任何意見讚賞。

+0

PATH =「/ usr/bin」的輸出是什麼? aws --version'? – matzeri

+1

由於你有兩個python,你需要每次安排PATH,這樣它們就不會相互干擾。當你需要使用windows python時,不要將cygwin放入PATH中,並且在需要使用cygwin時不要將窗口python放入PATH中。 PS:安裝pip後,'pip install awscli'也可以與cygwin pyhton3一起使用。 – matzeri

+0

PATH =「/ usr/bin」; aws --version - > -bash:aws:找不到命令 – kmh

回答

0

感謝上面的評論中的matzeri指導我修復。

問題是,cygwin有它自己的python版本...但不是點...所以當我在cygwin中使用「pip install」來安裝awscli時,它是windows/anaconda pip。解決方案並不涉及固定路徑,正如Matzeri指出的,它不會解決路徑問題......這是兩條線......

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

添加我的修補程序,爲您安裝anaconda2後,運行在Cygwin的命令誰都面臨這個問題Anacond2

人(假設你已經在安裝在C它:\ anaconda2)

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

更多信息可在https://www.davidbaumgold.com/tutorials/set-up-python-windows/#installing-cygwin

11

當運行cygwin的版本pip install awscli,它可以在窗口的Anaconda的Python installati安裝awscli而不是在Cygwin的Python(這是你想要的)。 然後,在運行aws時,將出現aws可執行文件無法找到的錯誤。我發現這是按照以下的bash裏面安裝cygwin的蟒蛇/ PIP解決方案從Cygwin的shell命令:

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 

確保您安裝了wget Cygwin中。

+1

可能需要顯式調用cygwin的pip(而不是Anaconda的):'/ cygdrive/c/cygwin64/bin/pip' – ChaimKut

4

在花了很多時間之後,我發現了一個可行的解決方案。

主要問題是,cygwin沒有安裝python,也不知道在哪裏可以找到機器上現有的Windows Anaconda版本。這可以通過在cygwin中運行which python來驗證 - 它無法找到保存python的位置。請注意,這可能會造成混淆,因爲運行pip install awscli可能不會引發錯誤消息。 Cygwin實際上在Windows的Anaconda安裝中安裝了awscli(我發現這很奇怪,因爲我們沒有運行conda install awscli)。然而,不要試圖將cygwin指向已經安裝的版本的Anaconda python在你的機器上,它會爲你節省大量的頭痛,以便安裝一個cygwin特定的python實例。做這樣的記錄在這裏的步驟:​​

  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

...但是,請注意,第一個命令pip uninstall awscli「掛斷」了我。所以只需使用quit()就可以逃脫它並按順序與其他人繼續。

如果您在cygwin中運行which python並且它指向cygin版本(即/ usr/bin/python,而不是:/users/.../Anaconda2/),則可以檢查所有工作。

此外,如果您碰巧在觀看快速安裝視頻的同時要求此操作。然後下一步是CRITICAL對於Windows用戶:當您從Github安裝文件夾(https://github.com/fastai/courses/tree/master/setup)下載所有shell腳本時,Windows會自動添加CRLF行終止符!因此,在Cygwin中,運行以下命令來刪除這些行結尾:

  1. apt-cyg install dos2unix
  2. dos2unix setup_p2.sh
  3. dos2unix setup_instance.sh
  4. 然後最後,bash setup_p2.sh

這應該做的伎倆。

相關問題