文章出處
文章列表
系統:win10
手頭有個python模塊,是用C寫的,想編譯安裝就需要讓python調用C編譯器。直接編譯發現使用的是vc9編譯,不支持C99標準(兩個槽點:為啥VS2008都還不支持C99?手頭這個C代碼為啥不好好寫?)
anyway,此時兩個想法,一個是改C源碼,另一個是自行用VS2013編譯一個python。事后證明第一個想法簡單容易。。第二個想法實際試過之后,感覺難度很大,水很深,最后也沒有淌出這渾水,簡單記錄下過程。
==== 分割線 ====
因為現在(2016年11月4日)python2.7在windows下的安裝包,無論是直接python27.exe還是anaconda2安裝的python,都是用vc9(vs2008)編譯的。(python沒啥神秘的,不妨簡單認為python就是一個用C/C++寫的一個項目,就像OpenCV這種)。
但是現在都2016了,為什么還要用VS2008來編譯呢?手頭要編譯的一個python模塊,其C代碼需要C99支持,VS2013才開始支持C99,VS2015又過于巨無霸,那就用VS2013編譯一個python呢?
- 下載python源碼,裝svn
解壓后進入D:\build\Python-2.7.12\PCbuild目錄
發現有個externals目錄里面是空的。像ssl tk tcl sqlite等模塊都需要把C源碼放這里的。手動放肯定是姿勢有問題的。看readme發現需要裝svn并添加到path,調用get_externals.bat會使用svn從python的repo上自動checkout下來這些external的源碼 - 編譯
雙擊打開PCbuild\pcbuild.sln
注意選擇x64 release模式 - 呃,這里就各種問題了
比如nmake找不到,這需要手動添加到path再重開vs
再比如tcl.h等頭文件找不到,怎么會找不到呢,明明在externals目錄中好不好。需要手動添加
...
最后發現tcl, tk, tix,_tkinter這4個項目,死活編譯不出來,真是掃興。當然如果只是要用python,那應該已經編譯好了。
文章列表
全站熱搜