在cygwin上配置aws时没有这样的文件或目录错误

时间:2017-01-04 12:40:44

标签: amazon-web-services cygwin

我下载了Cygwin和Python 2.5版。现在我要在aws上建立一个深度学习计算机(遵循本教程:https://www.youtube.com/watch?v=8rjRfW4JM2I

如果我运行pip install awscli,我会得到这个(这很好)

 $ pip install awscli 
 Requirement already satisfied: awscli in c:\users\marc\anaconda2    \lib\site-packages
 Requirement already satisfied: s3transfer<0.2.0,>=0.1.9 in c:\users\marc\anaconda2\lib\site-packages (from awscli)
 Requirement already satisfied: rsa<=3.5.0,>=3.1.2 in c:\users\marc\anaconda2\lib\site-packages (from awscli)
 Requirement already satisfied: PyYAML<=3.12,>=3.10 in c:\users\marc\anaconda2\lib\site-packages (from awscli)
 Requirement already satisfied: docutils>=0.10 in c:\users\marc\anaconda2\lib\site-packages (from awscli)
Requirement already satisfied: botocore==1.4.92 in c:\users\marc\anaconda2\lib\site-packages (from awscli)
Requirement already satisfied: colorama<=0.3.7,>=0.2.5 in c:\users\marc\anaconda2\lib\site-packages (from awscli)
Requirement already satisfied: futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7" in c:\users\marc\anaconda2\lib\site- packages (from s3transfer<0.2.0,>=0.1.9->awscli)
Requirement already satisfied: pyasn1>=0.1.3 in c:\users\marc\anaconda2\lib\site-packages (from rsa<=3.5.0,>=3.1.2->awscli)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in c:\users\marc\anaconda2\lib\site-packages (from botocore==1.4.92->awscli)
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in c:\users\marc\anaconda2\lib\site-packages (from botocore==1.4.92->awscli)
Requirement already satisfied: six>=1.5 in c:\users\marc\anaconda2\lib\site-packages (from python-dateutil<3.0.0,>=2.1->botocore==1.4.92->awscli)

但是,当我想配置所有内容并输入aws时,我得到:

$ aws
C:\Users\Marc\Anaconda2\python.exe: can't open file '/cygdrive/c/Users/Marc/Anaconda2/Scripts/aws': [Errno 2] No such file or directory

5 个答案:

答案 0 :(得分:5)

花了很多时间,我发现了一个有效的解决方案。

主要问题是cygwin没有安装python,也不知道在你的机器上找到现有Windows Anaconda版本的位置。这可以通过从cygwin中运行哪个python来验证 - 它无法找到python的保存位置。请注意,这可能会造成混淆,因为运行pip install awscli可能不会抛出错误消息。 Cygwin实际上在Window的Anaconda Python安装中安装了awscli(我发现这很奇怪,因为我们没有运行conda install awscli)。

然而,不是试图将cygwin指向你机器上已安装的Anaconda python版本,它将为你安装一个特定于cygwin的python实例节省大量的麻烦。这样做的步骤记录在此: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
  8. ...但请注意,第一个命令pip uninstall awscli&#34;挂断了&#34;为了我。所以只需使用quit()逃脱它,并按顺序继续其他。

    如果你在cygwin中运行which python并且它指向cygin版本(即/ usr / bin / python,而不是:/users /.../Anaconda2/),你可以检查一切是否有效。

    此外,如果你碰巧在观看fast.ai课程(http://course.fast.ai/lessons/aws.html)的设置视频的同时问这个,那么下一步是 CRITICAL < / strong>对于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
    5. 这应该可以解决问题。

答案 1 :(得分:5)

我跟Ryan Chase的答案走了正轨(但由于stackoverflow的信用不足,我无法评论他的回答)

在第4步之后:LinkedHashSetapt-cyg install python会返回所需的which python。 但是,从cygwin运行usr/bin/python仍然打开了我的本地anaconda python而不是cygwin python。

我最终使用了这个工作流程:

  1. python -i
  2. pip uninstall awscli
  3. wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
  4. install apt-cyg /bin
  5. apt-cyg install python
  6. wget https://bootstrap.pypa.io/get-pip.py
  7. /bin/python ~/get-pip.py
  8. /bin/pip install awscli
  9. 等。所以每次都使用/bin/aws强制cygwin使用它的本地版程序。这很麻烦,也许我会研究一下更好的方法让cygwin更喜欢它自己的版本的python而不是anaconda版本。

    我还需要将设置文件从windows更改为unix样式,所以:

    1. /bin/...
    2. apt-cyg install dos2unix
    3. dos2unix setup_p2.sh
    4. dos2unix setup_instance.sh

答案 2 :(得分:2)

普通的简单点子和awscli安装

$curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
$python get-pip.py
$pip install awscli --upgrade
.
.
.
$aws dms help
C:\python35\python.exe: can't open file '/cygdrive/c/Python35/Scripts/aws': [Errno 2] No such file or directory

d&#39;哦!错误中的路径表示windows python路径优先于我的执行路径中所需的cygwin python路径

$echo $PATH
/usr/local/bin:/usr/bin:/cygdrive/c/Python35/Scripts:/cygdrive/c/Python35:/cygdrive/c/OBASE/11gR2x32/bin:/cygdrive/c/OBASE/11gR2x64/bin:/cygdrive/c/OBASE12/12cR1x64/bin:/cygdrive/c/OBASE12/12cR1x32/bin:/cygdrive/c/ProgramData/Oracle/Java/javapath:/cygdrive/c/Program Files (x86)/IBM/WebSphere MQ/Java/lib:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/IBM/WebSphere MQ/bin64:/cygdrive/c/Program Files (x86)/IBM/WebSphere MQ/bin:/cygdrive/c/Program Files (x86)/IBM/WebSphere MQ/tools/c/samples/bin:/cygdrive/c/windows/system32/11g:/cygdrive/c/windows/system32/12c:/cygdrive/c/Program Files (x86)/Verint/Playback:/cygdrive/c/Program Files/Amazon/AWSCLI:/cygdrive/c/Users/r608182/AppData/Local/Microsoft/WindowsApps:/usr/lib/lapack:/cygdrive/c/Program/bin:/cygdrive/c/Program Files/Java/jdk1.8.0_144/:wq/bin:/cygdrive/c/Program Files/Java/jdk1.8.0_144//bin

我从执行路径中删除了两个可疑的执行路径罪魁祸首 [编辑foo并删除/ cygdrive / c / Python35 / Scripts和/ cygdrive / c / Python35并保存foo]

$echo $PATH > foo
$vi foo

[删除了罪魁祸首条目的重置路径]

$export PATH=`cat foo`

并且简单,因为所有这一切都与世界同步

$ aws dms help

dms
^^^


Description
***********

AWS Database Migration Service (AWS DMS) can migrate your data...

您希望将此执行路径修复程序放入.bashrc中,以便永久

答案 3 :(得分:1)

尝试此操作(例如,如果您的计算机上已在c:\ anaconda2上安装了anacond2)

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

提供更多信息

答案 4 :(得分:0)

基本问题是Python的Windows安装在PATH中并与cygwin python冲突(如果/当你安装它时)。

最完整的答案来自上面的Wouter van Amsterdam。但是,如果像我一样你不关心Windows python然后只是转到Windows“添加或删除程序”并卸载Python。然后在cygwin命令行上使用apt-cyg安装Python,然后pip然后awscli

如果您有Windows python并且在cygwin命令行上安装awscli(或任何python包),那么根据您的PATH和PYTHONPATH等,您可能仍然最终将其安装到Python的Windows安装中。这是造成OP问题的原因。