cygwin中的aws cli - 如何清理windows和cygwin样式路径中的差异

时间:2016-05-10 22:02:13

标签: python cygwin aws-cli

我怀疑这是我无法正确设置路径变量,但我不知所措。

我已经在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

当我尝试运行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'

我已经尝试将aws的路径添加到我的windows路径变量中。没有运气。

我已经尝试将此添加到我的.bashrc

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

没有运气。

我已尝试修改过' aws'那个python试图运行。首先我修改了#!指向cygwin python而不是windows python。

#!c:\cygwin64\bin\python
然后它就可以找到文件' aws'运行...但它无法找到要导入的任何文件......' awscli.clidriver',' botocore ._'等。

我尝试修改我的路径变量以指向这些的位置... anaconda / lib / site-packages ...我甚至尝试在'中尝试执行sys.path.insert(1,path)。 AWS'文件本身....它解决了这个问题,但它加载的每个文件都在其他地方查找而没有找到它们,并且在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

但必须有更好的方法,对吧?要么...

  • 将我的路径变量设置为正确

  • 获取安装在cygwin python目录中的aws cli而不是windows anaconda环境

不幸的是,pip uninstall只是挂起试图删除awscli,如果我甚至可以卸载/重新安装,我也不知道如何强制它使用cygwin python。在尝试修复我的路径变量之后,我感到很茫然。

任何建议表示赞赏。

4 个答案:

答案 0 :(得分:12)

从cygwin运行pip install awscli时,它可能会在Window的Anaconda Python安装中安装awscli,而不是在Cygwin的Python中安装(这是你想要的)。 然后,在运行aws时,您将收到无法找到aws可执行文件的错误。我找到的解决方案是通过以下来自cygwin shell的bash命令在cygwin中安装python / pip:

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

确保在cygwin中安装了wget。

答案 1 :(得分:4)

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

主要问题是cygwin没有安装python,也不知道在你的机器上哪里可以找到现有的Windows Anaconda版本。这可以通过在cygwin中运行which 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“挂了”给我。所以只需使用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. 这应该可以解决问题。

答案 2 :(得分:1)

为在Anacond2中遇到此问题的人添加我的修复程序

安装anaconda2后,在cygwin中运行此命令(假设您已将其安装在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

提供更多信息

答案 3 :(得分:0)

感谢上面评论中的matzeri指导我修复。

问题是cygwin拥有它自己的python版本......但不是pip ...所以当我在cygwin中使用“pip install”来安装awscli时,它就是windows / anaconda pip。解决方案没有涉及固定路径,正如matzeri所指出的那样,它永远不会解决路径......这就是这两条线......

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