Windows平台编译Python时pyconfig.h文件的定位及缺失问题排查
Windows平台编译Python时pyconfig.h文件的定位及缺失问题排查
兄弟,我太懂你这种找不到头文件的抓狂感了!其实这是Windows下Python编译流程和Linux的差异导致的,不用慌,咱们一步步捋清楚:
首先,你得知道Windows下编译生成的pyconfig.h根本不在主Include文件夹里!当你运行build.bat -p x64完成编译后,这个文件会生成在PCBuild\x64目录下——没错,就是你指定的架构对应的编译输出子文件夹里,而不是根目录的Include里。
为啥会这样?因为Windows的编译脚本会根据你指定的架构(x64/x86)、所用的VS版本等环境参数,从pyconfig.h.in这个模板文件生成适配当前环境的pyconfig.h,直接放在对应架构的编译输出目录里,和Linux用configure生成到主Include目录的逻辑不一样。
接下来给你几个解决步骤:
- 先确认编译是否真的成功:去
PCBuild\x64目录里看看,有没有pyconfig.h,同时有没有生成python.exe、python3.dll这类文件。如果这些都有,说明编译没问题,只是你找错地方了;如果没有,那可能是build.bat运行过程中报错了,得回去看控制台的错误信息排查编译失败的原因。 - 配置项目包含路径:当你自己写代码要包含
Python.h时,除了把Python源码根目录下的Include文件夹加到项目的包含路径里,还要把PCBuild\x64这个路径也加进去——这样编译器就能找到Python.h依赖的pyconfig.h了。 - 别手动复制pyconfig.h到Include目录:不同架构的pyconfig.h内容是不一样的,复制过去后,下次编译x86版本时就会出问题,最好的方式就是让项目指向对应架构的PCBuild子目录。
备注:内容来源于stack exchange,提问作者Zebrafish
相关产品推荐
相关产品推荐

