文章出處

系統: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呢?

  1. 下載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的源碼
  2. 編譯
    雙擊打開PCbuild\pcbuild.sln
    注意選擇x64 release模式
  3. 呃,這里就各種問題了
    比如nmake找不到,這需要手動添加到path再重開vs
    再比如tcl.h等頭文件找不到,怎么會找不到呢,明明在externals目錄中好不好。需要手動添加
    ...

最后發現tcl, tk, tix,_tkinter這4個項目,死活編譯不出來,真是掃興。當然如果只是要用python,那應該已經編譯好了。


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()