2015-04-21 36 views
1

我最近剛剛開始嘗試在Windows上運行cygwin。win 8.1 cygwin - pip安裝到windows python目錄下?

試圖建立一個開發環境,並注意到一些古怪。 因此,例如,我已經安裝了virtualenvwrapper但是當我打開一個新的Cygwin的終端,我得到

-bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory 

(設置在我的.bashrc適當的行之後),所以我嘗試重新安裝virtualenvwrapper使用PIP和我得到

$ 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/ 中,實際上該目錄是完全裸露的。 我預計會看到我安裝的點子的更新版本。它當然是在Windows目錄中。

我以前曾通過PIP安裝virtualenvwrapper Windows版本,但我的理解是,在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變量附加了窗口。確定足夠的路徑到窗口點是在那裏。

$ echo $PATH 

這是預期嗎?如果是這樣,爲什麼這是可取的?它不會增加像這樣的無意衝突的機會嗎?

+0

你似乎主要回答自己的問題。剩下的唯一問題就是爲什麼Cygwin版本的pip不在你的路徑中。您可能需要單獨安裝它,或將Python的版本更新爲包含pip的版本。 –

+0

我手動安裝了pip。當我運行哪個點時它顯示正確的一個。在/ usr/bin中/ PIP。不幸的是它仍然在將軟件包安裝到窗口目錄中。你有什麼想法? –

+0

您是如何手動安裝pip的?使用Cygwin安裝程序? –

回答

0

所以我會在這裏留下這個警告給像我一樣的n00bs。

cygwin將windows路徑附加到cygwin終端PATH env變量。

如果您已經在Windows上安裝了pip,並且它在您的路徑上,它將會正常工作,但會出現類似上述的意外結果。

檢查確保你做

which python 
which pip 

,以確認你正在運行的版本。

only python 2.7。9並且默認包含pip,並且包含在cygwin中的包還沒有。所以你很可能需要手動安裝pip

如果你打開了一個cygwin終端,你將需要關閉所有窗口,否則它會記住windows pip的路徑。