2015-07-12 77 views

回答

1

舊的Cygwin是用它的stdin,stdout,stderr編寫的,綁定到Windows上,也就是說它是一個Win32控制檯程序。然後,它是可以運行的Python的Windows版本爲:

/cygdrive/c/Python27/python.exe 

你甚至可以添加/cygdrive/.../Pythonxx到PATH環境變量。

使用自己的終端編寫較新的版本,當您運行像Python這樣的Win32控制檯應用程序時,它會凍結。 即使在cygwin中運行「cmd」運行也不行。

一半的答案是運行它總是在交互模式,然後它工作一點。例如。

/cygdrive/c/Python27/python.exe -i program.py 

或只是外殼

/cygdrive/c/Python27/python.exe -i 

您可以嘗試下cygwins選項玩耍,並改變其目前模擬終端,看看它是否會做你任何好處。

在cygwin下運行Windows版本的Python,如果你有一個較舊的版本,就像你仍然在Windows中一樣,但是使用Unix控制檯。 我認爲這不是你想要做的, 但提到它以防萬一。 我想這麼做,但是,對於較新的Cygwins,它不起作用。 然後所有模塊仍然存在。你還在Cygwin。

要從Cygwins版本訪問Windows版本的Python中的模塊,請將Windows站點包添加到Python路徑變量中。 在你的程序的頂部做:

import sys 
sys.path.insert(0, "/cygdrive/c/Python27/lib/site-packages") 

然後就可以正常導入。但是,這不是完全可取的。例如,所有依賴Windows路徑的模塊都可能有很大的問題。或者那些用C語言編寫的程序不會完全像從Cygwin調用的那樣。 特別是當Cygwin的Python版本號和Windows的版本號不一樣時。 我試圖與pyaudio,它collosaly墜毀。 其中一些(主要是小孩)將工作得很好。

但是,重要注意事項在於,根據插入Windows站點包路徑的位置,將搜索目錄。 如果你把它放在0的地方,Python會首先查看它。 然後,它可能是更好的使用:

sys.path.append("/cygdrive/c/Python27/lib/site-packages") 

如果某些包打包成一個雞蛋或ZIP壓縮文件,則必須單獨添加它的路徑。 子目錄也是如此。你試着保持大拇指。

如果你不想做,你可以:

import os 
wd = os.getcwd() 
os.chdir("/cygdrive/c/Python27/lib/site-packages") 
# Your Windows imports here 
os.chdir(wd) 

有時候你必須兩者都做。

您可以添加甚至支票,讓你的程序在兩種環境下很好地工作:

if sys.platform=="cygwin": ... 

它將工作沒有檢查,但它是愚蠢的有兩次加同一目錄打擾Python的進入路徑。

複製軟件包可以節省您從這些額外的代碼行,但我上面提到的問題將保持不變。 從來沒有這麼少,如果模塊很小,如果不是這樣,複製它們,照我說的去做,但請注意,它不完全是應該完成的事情。

相關問題