我最近刚开始涉足在Windows上运行cygwin。
尝试设置开发环境,并注意到一些奇怪之处。 所以例如,我已经安装了virtualenvwrapper但是当我打开一个新的cygwin终端时,我得到了(在我的.bashrc中设置了相应的行之后)
-bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory
所以我尝试使用pip重新安装virtualenvwrapper并获得
$ pip install virtualenvwrapper
Requirement already satisfied (use --upgrade to upgrade): virtualenvwrapper in c:\python27\lib\site-packages
Requirement already satisfied (use --upgrade to upgrade): virtualenv in c:\python27\lib\site-packages (from virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): virtualenv-clone in c:\python27\lib\site-packages (from virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): stevedore in c:\python27\lib\site-packages (from virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): argparse in c:\python27\lib\site-packages (from stevedore->virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): six>=1.9.0 in c:\python27\lib\site-packages (from stevedore->virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): pbr!=0.7,<1.0,>=0.6 in c:\python27\lib\site-packages (from stevedore->virtualenvwrapper)
Requirement already satisfied (use --upgrade to upgrade): pip in c:\python27\lib\site-packages (from pbr!=0.7,<1.0,>=0.6->stevedore->virtualenvwrapper)
是什么给出的?为什么要将它安装到windows目录?果然我可以看到virtualenvwrapper没有安装在c:/cygwin64/lib/Python2.7/site-packages/ 事实上,该目录是完全裸露的。 我希望看到安装了pip i的更新版本。它当然是在windows目录中。
我以前通过pip在windows上安装了virtualenvwrapper,但我的理解是windows环境和cygwin终端完全是分开的,不应该彼此了解(?)
正如您所料,这也会破坏其他软件包的破坏性。 例如,尝试安装uwsgi我得到这个错误:
Collecting uWSGI==2.0.7 (from -r _pip/requirements.txt (line 52))
Downloading uwsgi-2.0.7.tar.gz (772kB)
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 20, in <module>
File "c:\cygwin64\tmp\pip-build-n5cvur\uWSGI\setup.py", line 3, in <module>
import uwsgiconfig as uc
File "uwsgiconfig.py", line 8, in <module>
uwsgi_os = os.uname()[0]
AttributeError: 'module' object has no attribute 'uname'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in c:\cygwin64\tmp\pip-build-n5cvur\uWSGI
我理解是因为os.uname在Windows上不存在。为什么pip安装程序使用windows python运行安装程序?
-------更新-------
我想我找到了根本原因
$ which pip
/c/Python27/Scripts/pip
所以我的问题是: 默认情况下为什么要点击一个窗口?或者这是怎么发生的?
--------更新2 ----------
我刚刚发现cygwin中的默认PATH env变量将窗口附加一个。果然,通往windows pip的路径就在那里。
$ echo $PATH
这是预期的吗?如果是这样,为什么这是可取的?它不会增加像这样的无意冲突的机会吗?
答案 0 :(得分:0)
所以我将这里留下来作为对像我这样的n00bs的警告。
cygwin将windows路径附加到cygwin终端PATH env变量。
如果你已经在Windows上安装了pip并且它在你的路径上它会起作用,但会有如上所述的意外结果。
检查确保你做
which python
which pip
确认您正在运行的版本。
只有python 2.7.9及以上默认包含pip而cygwin中包含的包还没有。所以你很可能需要手动安装pip
如果你打开了一个cygwin终端,你将需要关闭所有窗口,否则它会记住windows pip的路径。