当前位置: 首页 > news >正文

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

相关文章:

  • 【Java 基础篇】【第三课】表达式、控制结构
  • Microsoft Web Platform Installer 5.0
  • 这是一份优秀的餐饮行业微信营销解决方案
  • zabbix专题:附加 zabbix配置文件详解
  • 抽奖抢购算法改进版
  • 解决:SharePoint当中的STP网站列表模板没有办法导出到其它语言环境中使用
  • 无法删除数据库,因为该数据库当前正在使用问题解决
  • 洛谷 P1204 [USACO1.2]挤牛奶Milking Cows Label:模拟Ex 74分待查
  • expect
  • 前置声明和头文件
  • ionic函数 官方使用帮助
  • 请求转发与请求重定向
  • 2-MSP430按键输入检测
  • 研究课题已确定,列举一些大牛的主页纪念一下,哈哈
  • java命令行参数
  • axios 和 cookie 的那些事
  • canvas 高仿 Apple Watch 表盘
  • IndexedDB
  • windows-nginx-https-本地配置
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 给第三方使用接口的 URL 签名实现
  • 构造函数(constructor)与原型链(prototype)关系
  • 和 || 运算
  • 前端
  • 如何选择开源的机器学习框架?
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​io --- 处理流的核心工具​
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # Java NIO(一)FileChannel
  • # 计算机视觉入门
  • #{}和${}的区别是什么 -- java面试
  • #NOIP 2014# day.2 T2 寻找道路
  • #数学建模# 线性规划问题的Matlab求解
  • (3)nginx 配置(nginx.conf)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (二)linux使用docker容器运行mysql
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (十六)串口UART
  • (新)网络工程师考点串讲与真题详解
  • (转)iOS字体
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net各种迷惑命名解释
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • ??在JSP中,java和JavaScript如何交互?
  • @RequestBody的使用
  • [<死锁专题>]
  • [Android]使用Retrofit进行网络请求
  • [Angular] 笔记 9:list/detail 页面以及@Output