N久沒有開始寫博客了,總以爲要隨便記點東西,歲月蹉跎,曾經搞得一些東西、技術、工具,說丟也就丟了,點點滴滴仍是要記錄一下吧。。。html
在windows下使用pip安裝一些python的第三方庫,有不少使用C寫了一些擴展,須要使用VC++ Compiler 來編譯安裝(也可以使用MInGW,通常不推薦),不然就會出現「Unable to find vcvarsall.bat」。像Python2.7就須要使用VS2008 C++ compiler , 而python3至python3.4 (python3.5 將採用VS2015)採用VS2010 編譯生成。可是,凡安裝過VS這個巨無霸的臃腫IDE的都知道,附帶捆綁一大堆你不知道有沒有用的Microsoft 的插件,佔據大量的C盤空間,啓動又慢,雖然IDE的界面功能勉強過得去。若是電腦配置通常的話,這東西就搞得N個卡,通常不作相關開發的,就不必去安裝整個VS。 對於Python 2.7 來講,微軟還算有良心,直接推出了Microsoft Visual C++ Compiler for Python 2.7,下載直接安裝便可。而後,在開始菜單-》全部程序裏面,找到對應的目錄,根據的你的平臺和python版本(選x86或x64)點擊對應的Command Prompt運行。 這個cmd窗口裏面,能夠輸入set命令查看一下環境變量,發現,已經設置好了INCLUDE=, PATH=, LIB=, and LIBPATH=這幾個參數,因而直接輸入python
pip install numpy
就可安裝編譯對應的第三方模塊、庫了,有時編譯過程比較漫長, 需耐心等待。linux
而對python3 來講, 則沒有這麼方便了,因爲個人Python3.4 是64位,顯然直接用VS2010 Express也不行了,由於它默認只有x86版本的,沒有64位的。參考一下Stackoverflow中一篇問答:redis
Python PIP has issues with path for MS Visual Studio 2010 Express for 64-bit install on Windows 7shell
根據上面提出的建議,我在本機上獲得對應解決方案。先安裝VS2010 Express ,而後再安裝windows SDK 7.1 ,最後也要安裝一個64位compiler的補丁;express
Microsoft SDK 7.1 (Windows 7)
windows
PS:在安裝SDK 7.1 以前,請先卸載 VC redistribute 2010 相關(包括X86 和 X64)組件包,不然安裝報錯。visual-studio
完成上述步驟以後,基本的MSVC的編譯環境(包含x64)就已經配置好了,可是若是你在之後編譯項目的時候,好比在構建Qt5項目時,會出現出現如下錯誤:測試
c:\program files (x86)\microsoft visual studio 10.0\vc\include\intrin.h(26): fatal error C1083: Cannot open include file: 'ammintrin.h': No such file or directory
此時則能夠到網上下載對應 ammintrin.h ,放到 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\目錄下便可,可在下面的這篇百度文庫裏下載:
ammintrin.h頭文件,Windows SDK 7.1安裝KB2519277補丁後必備
安裝完畢以後,在開始菜單裏面,找到「Windows SDK 7.1 Command Prompt」, 點擊運行,在shell下能夠經過SetEnv 來設置對應的編譯環境,以下圖:
設置「setenv /x64」 以後,便可在64位編譯環境下pip install 對應的包。
到了這裏,可能須要提一下,搭建好環境後,分別在python 2.7 和 python 3.4 裏面安裝numpy,發現py2沒問題,py3卻安裝編譯link失敗(以前都在虛擬機裏面測試了一下,py3安裝是沒問題的),這是爲什麼呢? 請對比一下下面兩幅圖:
顯然py2安裝的時候,link命令行下的libpath使用「」引發來了,因此路徑有空格不會把參數隔斷,而py3就沒這麼細緻了,不知道是pip、setuptools調用cmd命令的缺心眼,仍是distutils裏面的bug,反正py3的安裝路徑不能有空格。因而調整了一下python3的安裝路徑,也就是不含空格,就編譯成功了。
固然這只是搭建好了VC++ 的編譯環境,對於像SciPy這樣的數值計算庫,安裝的話須要Fortran的編譯器。顯然windows下的編譯安裝遠沒有linux下的簡單方便(除了包名很差記,包依賴比較麻煩),gcc、gfortran現成的,apt-get 裏面也有現成的。 因此在windows下開發測試的話,能夠直接在這個加州大學爾灣分校(UCI)提供的大量已編譯打包好的針對windows的wheel安裝包,上面有Numpy、SciPy、matplotlib等等數值分析、科學計算的模塊庫,而且還都是 MKL 版的。下載對應的版本,直接用「pip install xxxx.whl」便可完成安裝,whl文件其實就跟zip文件同樣,打包壓縮一下而已,你也直接用壓縮軟件解開,將其放到對應的Lib/site-packages目錄下便可。Of course,你也可使用 Anaconda 這樣的python定製環境版本,裏面已將上面的包直接集成了,包括像IPython這麼好用的REPL工具,以及conda 包管理。