1.windows上做Python開發(fā),搭環(huán)境還真不比Linux容易。error: Unable to find vcvarsall.bat這個錯誤眼熟吧? 凡是安裝和操作系統(tǒng)底層密切相關(guān)的Python擴(kuò)展,幾乎都會遇到這個錯誤。比如PIL, Pillow(兩個圖形庫),greenlet以及其基礎(chǔ)之上的eventlet, gevent微線程并發(fā)庫等等。當(dāng)然了有一些情況下,你不必徹底解決它,你可以選擇windows版本,那么也就只能使用閹割版功能。 PIL有windows版,即使安裝上了,64位Python一定報(bào)錯 The _imaging C module is not installed, 除非自己重新編譯安裝。此外與CPU位數(shù)可能有關(guān)系,僅個人猜測。本人兩個機(jī)器都是Win7旗艦版64位,安裝的32位Python,其中一個CPU是64位的也遇到這個錯誤,32位的CPU則不報(bào)錯。 為了解決64位CPU報(bào)錯,于是安裝Pillow的windows版,確實(shí)能正常使用,不再報(bào)錯。但是圖片效果極不理想,圖片里面用到font就悲劇,出個驗(yàn)證碼的圖片都難以辨認(rèn)。 greenlet也可以安裝windows版,有可能報(bào)錯加載動態(tài)鏈接庫失敗,比如”ImportError: DLL load failed: %1 不是有效的 Win32 應(yīng)用程序。“不幸我也遇到了。
2.windows安裝使用這些偏底層的Python擴(kuò)展太不爽了,怎么徹底解決 error: Unable to find vcvarsall.bat 呢? 1.不要按網(wǎng)上說的,安裝MinGW,然后在“..python安裝路徑...\Lib\distutils”下新建一個文件distutils.cfg,在這文件里面指定編譯器為mingw32 如:
原因是什么,可以百度一下mingw是什么,畢竟不是GCC,又不如VC接windows的地氣,編譯出來的東西,安裝上了也有不好使的時候。甚至我遇到MinGW還無法編譯greenlet0.4.1,導(dǎo)致greenlet無法源碼安裝。MinGW經(jīng)常command 'gcc' failed with exit status 1 或者error: unrecognized command line option '-mno-cygwin'。即使編譯通過了,安裝上了,你安裝的Python標(biāo)準(zhǔn)庫不是由mingw編譯的,你的擴(kuò)展包卻是mingw編譯的,誰也不敢保證完全兼容或者說質(zhì)量跟得上,說不準(zhǔn)一些莫名其妙的神經(jīng)質(zhì)錯誤。
2.去下載安裝VS2010(08版貌似也行,不過沒必要用舊版,指不定哪個庫又無法編譯),給個地址(百度的云盤 國內(nèi)應(yīng)該速度可以) http://pan.baidu.com/share/link?shareid=1609273194&uk=3255422755 然后注意這一步很重要:命令行下執(zhí)行 SET VS90COMNTOOLS=%VS100COMNTOOLS% 如果你安裝的是 2012 版 SET VS90COMNTOOLS=%VS110COMNTOOLS% 如果你安裝的是 2013版 SET VS90COMNTOOLS=%VS120COMNTOOLS% 或者更暴力,直接配置系統(tǒng)環(huán)境變量 VS90COMNTOOLS指向 %VS你的版本COMNTOOLS% 你還可以更暴力,在“..python安裝路徑...\Lib\distutils目錄下有個msvc9compiler.py找到243行 toolskey = "VS%0.f0COMNTOOLS" % version 直接改為 toolskey = "VS你的版本COMNTOOLS"(這個就是為什么要配 ”VS90COMNTOOLS“ 的原因,因?yàn)槿思椅募几嬖V你了是 Microsoft vc 9的compiler, 代碼都寫死了要vc9的comntools,就要找這個玩意兒,找不到不干活) 這么做的理由是Python2。7 擴(kuò)展包是可以用08版或者更高的VS編譯的,其setup.py(安裝腳本)都是去windows系統(tǒng)尋找08版的VS,所以設(shè)置VS90的path 如果Python版本小于2.7,強(qiáng)烈建議使用 VS08版,用2010或者更高可能部分?jǐn)U展不好使。給個例子: http:///questions/6551724/how-do-i-point-easy-install-to-vcvarsall-bat 這個例子說明 VS2010不適合Python2.6
3.安裝VS后該重啟的重啟,clean一下之前安裝Python擴(kuò)展失敗的殘留文件,然后 直接下載 pil pillow greenlet eventlet等源碼,解壓后python setup.py build發(fā)現(xiàn)都可以編譯了。接下來就換成 python setup.py install安裝吧。 |
|