VS2013编译python源码

系统: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,那应该已经编译好了。

时间: 2024-10-11 12:04:45

VS2013编译python源码的相关文章

windows7下cygwin+vs2013编译webkit源码

先下载源码和其他依赖,然后准备cygwin的环境,安装vs2013,最后编译即可.网上没有能直接用于最新版本源码编译的教程,所以我在编译过程中也遇到了很多坑.回过头来看,这些坑都是可以避免的,想要自己尝试编译的同学,可以根据本文快速的实现自己编译webkit(~除去下载文件的时间,15分钟准备环境,1小时编译完成). 下载最近源码 最近的下载版本和源码在这里: http://nightly.webkit.org/ 我使用的源码是这个版本built on 13 October 2014 and i

Windows平台使用VS2013编译VLC源码

一.前言 研究VLC源码已有一段时间,一直未形成经验文档,借csdn博客,记录学习的过程及总结的经验,抛砖引玉,期望能给同仁一点帮助. 二.准备工作 VS下编译的VLC源码目录:https://github.com/sunqueen/vlc-2.2.1.32-2013 这个是sunqueen大神参考VLC源码经过修改后的适合VS编译器的源码,我于2016年3月中旬将该源码与VLC官网源码对比后,发现基本逻辑保持一致,仅修改了一些编译不过的地方.修改点主要涉及到以下几个部分 1.VS下不支持动态申

《深入解析Android 虚拟机》——第1章 获取并编译Android源码 1.1获取Android源码

第1章 获取并编译Android源码 在本章中,将详细讲解获取并编译Android源码的基本知识,介绍各个目录中主要文件的功能,为读者步入本书后面知识的学习打下基础. 1.1 获取Android源码 要想研究Android系统的源码,需要先获取其源码.目前市面上主流的操作系统有Windows.Linux.Mac OS的操作系统,由于Mac OS源自于Linux系统,因此本书将讲解分别在Windows系统和Linux系统中获取Android源码的知识. 1.1.1 在Linux系统获取Androi

依赖-怎样用vs2010编译mapnik源码

问题描述 怎样用vs2010编译mapnik源码 在官网下在mapnik-2.2.0. 一些个依赖项全都有.怎样用vs2010编译产生mapnik.dll 解决方案 网上资料实在太少,查了好几天都没有找到在windows上编译mapnik源码的资料.这么好的东西为什么没多少人在研究呢. 解决方案二: 后来编译出来没啊 楼主 我从官网上能下到mapnik.dll哎 但后面不知道应用到自己的程序里去

CentOS6.5上编译OpenJDK7源码

采用开源的OpenJDK版本,获取其源码的方式有两种: 通Mercurial代码版本管理工具从Repository中直接取得源码,但是速度太慢,需要花费数小时 直接下载官方打包好的源码包(推荐) 下载源码openjdk-7u6-fcs-src-b24-28_aug_2012.zip,解压,下载地址如下: http://www.java.net/download/openjdk/jdk7u6/promoted/b24/openjdk-7u6-fcs-src-b24-28_aug_2012.zip

编译ubuntu源码的时候创的rootfs_tmp文件夹时删除出现“设备或资源忙”

问题描述 编译ubuntu源码的时候创的rootfs_tmp文件夹时删除出现"设备或资源忙" 如标题所示: 编译ubuntu源码的时候创的rootfs_tmp文件夹时删除出现"设备或资源忙" 先上图.. _这样我就不明白了,手动删的话也是出现这个问题,然后我就想到某度了下,说是有其他进程用着,好吧,我就来fuser下,带上-uv 选项, 然而进程号却成了这鬼...我一下楞逼了,按照我学的linux,进程号不就是数字么? 求解求解,这是为什么,这源码我还怎么编译下去?

gradle 编译spring源码报错

问题描述 gradle 编译spring源码报错 解决方案 Gradle对Spring源码编译gradle安装及编译spring源码Git下载Spring源码 Gradle编译Spring源码为Eclipse工程文件

android源码编译-android 源码编译报错

问题描述 android 源码编译报错 android 源码编译报错,在网上查找没有类似的回答,是否有大神遇到类似问题. 解决方案 看看你报错的上一行,libext2fs.so这个文件缺少,应该是你的源码有问题,或者库没有安装好(编译源码前不是有环境配置吗,要安装一些列东西) 解决方案二: 在android 源码里 编译 aidl 报错 的问题编译android源码报错:build/envsetup.sh: 1: Syntax error: ""("" unexpe

编译android源码-Mac OS X Yosemite10.10.1下编译android 源码问题

问题描述 Mac OS X Yosemite10.10.1下编译android 源码问题 选择编译目标时执行以下命令: $lunch full-eng 报错 Cannot find SDK 10.7 at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk 源码下载以及编译参考文章:Mac OS X 10.8.4下Android4.2.2源码下载与编译