一、2.5.6版本源碼編譯
-
解壓 Python-2.5.6.tgz
-
進入 Pcbuild8 文件夾,使用 vs 2013 打開 pybuild.sln (vs 解決方案),進入 vs2015IDE 環境
- 進入IDE后之后,在載入解決方案時vs會要求我們進行升級操作,確認即可,完了會彈出一個升級報告的html文件,一般沒有錯誤
-
右鍵解決方案’pcbuild’ ⇒ 屬性
-
通用屬性
單啟動項目 ⇒ 選擇 python
-
配置屬性
- 左上角的【配置】⇒ Debug(Release 可能會報錯)
- 項目上下文 ⇒ 僅選中 python/pythoncore
-
-
首先編譯 make_buildinfo 和 make_versioninfo
分別右鍵 make_buildinfo/make_versioninfo ⇒ 僅用於項目 ⇒ 僅重新生成
-
編譯此解決方案,最終會在開始的 PCbuild8\Win32Debug文件夾下生成 python_d.exe 和 python25_d.dll 文件,可雙擊 python_d.exe,進入 python 命令行環境。編譯中間應該有6個錯誤,解決方式如下,
timezone這個宏不再被vs2015支持,所有出現的地方都要替換為_timezone,剩下的幾個關於時間的編譯錯誤也是如此加個下划線【_】就好了。錯誤都集中在 pythoncore下的timemodule里 line:687附近,也有幾個其他的報錯變量出現,位置也在這附近,處理方法同樣是前面加下划線。項目的配置問題:主要是compiler編譯出的中間文件名和linker使用的文件名不匹配,參考之前的錯誤報告, 需要在配置里設置
pythoncore項目的輸出文件名為$(PyDllName)_d(右鍵pythoncore ⇒ 屬性)。

二、3.6.5版本源碼編譯
整體流程同編譯2.x版本,只是編譯時錯誤不一樣,
編譯解決方案時有可能會出錯:windows sdk version 10.0.15063 was not found,解決方案是根據Fix python 3.6 build failure with VS 2015 and WinSDK!=10.0.15063所說的方法,打開python.props, 將第77行(3.6.5版本此處實際在77行后面一點),
<DefaultWindowsSDKVersion>10.0.15063.0</DefaultWindowsSDKVersion>
更改為,
<DefaultWindowsSDKVersion Condition="$(_RegistryVersion) == '10.0.15063'">10.0.15063.0</DefaultWindowsSDKVersion>
即可。

