用了很久python, 最近决定在windows下编译python的源代码,还是遇到了几个坑,花了几个小时==谨记此文,希望为后来者避开这些坑。
- 首先,我们从官网下载python 3.6.4的源代码,选择Gzipped source tarball 或者 XZ compressed source tarball
- 然后,我们解压开源码,进入到PCbuild目录,里面有VS的工程文件
pcbuild.sh
,仔细阅读下readme.txt,最重要的信息是需要的VS的版本是VS2015,编译一个可以用的CPython解析器最少需要编译python和pythoncore - 我们就只编译python和pythoncore,需要别的功能,请参照readme.txt的内容,用VS2015打开
pcbuild.sh
,设置解决方案的配置属性,只保留python和pythoncore,如下图所示:
- 编译解决方案,这时有可能会出错:
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行
<DefaultWindowsSDKVersion>10.0.15063.0</DefaultWindowsSDKVersion>
更改为
<DefaultWindowsSDKVersion Condition="$(_RegistryVersion) == '10.0.15063'">10.0.15063.0</DefaultWindowsSDKVersion>
5.然后就能编译成功啦,在PCbuild
同目录层次下会生成Lib
文件夹,在PCbuild
目录下会生成win32
文件夹,里面根据你编译的是debug还是release版本,会生成python_d.exe
或者python.exe
,打开它,就能运行了。
6.如果不想安装VS2010并且想编译Python 2.7的话,可以参考使用 Visual Studio 2015编译 Python 2.7.11这篇文章,如果编译的是python 2.7.14的话,按照上面的文章设置完后,还会出现错误,可以参考 https://bugs.python.org/issue25759 的方法。