win 8.1 cygwin - pip是否正在安装到windows python目录中?

时间:2015-04-21 01:37:32

标签: python cygwin windows-8.1 pip

我最近刚开始涉足在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

这是预期的吗?如果是这样,为什么这是可取的?它不会增加像这样的无意冲突的机会吗?

1 个答案:

答案 0 :(得分:0)

所以我将这里留下来作为对像我这样的n00bs的警告。

cygwin将windows路径附加到cygwin终端PATH env变量。

如果你已经在Windows上安装了pip并且它在你的路径上它会起作用,但会有如上所述的意外结果。

检查确保你做

which python
which pip

确认您正在运行的版本。

只有python 2.7.9及以上默认包含pip而cygwin中包含的包还没有。所以你很可能需要手动安装pip

如果你打开了一个cygwin终端,你将需要关闭所有窗口,否则它会记住windows pip的路径。