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

kmh*_*kmh 7 python cygwin aws-cli

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

我在cygwin中使用pip安装了aws cli.

pip install awscli
Run Code Online (Sandbox Code Playgroud)

我有两个python环境......一个windows anaconda发行版,cygwin可以为你安装.

which python 
> /usr/bin/python

where python
> C:\cygwin64\bin\python
> C:\windows-style-path-to-anaconda\python.exe
Run Code Online (Sandbox Code Playgroud)

当我尝试运行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'
Run Code Online (Sandbox Code Playgroud)

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

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

export PATH="$PATH:/cygdrive/c/cygdrive-style-path-to-anaconda/Scripts"
Run Code Online (Sandbox Code Playgroud)

没运气.

我试过修改python试图运行的'aws'.首先我修改了#!指向cygwin python而不是windows python.

#!c:\cygwin64\bin\python
Run Code Online (Sandbox Code Playgroud)

那么它可以找到文件'aws'来运行...但它找不到要导入的任何文件......'awscli.clidriver','botocore._'等.

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

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

  • 让我的路径变量设置正确

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

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

任何建议表示赞赏

Har*_*hne 12

pip install awscli从cygwin 运行时,它可能会在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
Run Code Online (Sandbox Code Playgroud)

确保你在cygwin中安装了wget.


kmh*_*kmh 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
Run Code Online (Sandbox Code Playgroud)