python升级第三方库_第三方库中的Python升级到3.4.1

自从2011年KlayGE在代码库中包含所有第三方库以来,Python一直都是基于3.2的版本,这几年来Python本身的发展都没跟上。最近打算把Python移植到WinRT平台,所以干脆先一鼓作气,更新到最新的3.4.1上。

升级3.4.1

把代码更新到3.4.1,虽然文件添加、删除、修改都很多,但cmake里只要做很少的修改,就能完成编译和执行。但原装的python仍然不支持android,所以还得把以前的补丁手工修改到新版本上。另外,默认情况下python用的是mbcs进行编译的,改成unicode之后有几个编译错误,也顺便修改了。纯unicode版本的好处是,Lib/encode目录下不再需要带着各种编码的.py文件,全都用utf-8就行了。

WinRT的支持

原装的python也不支持WinRT。如果直接编译,会有上千个错误。找来找去,最终在python的sandbox分支里找到了Martin v. Löwis做的WinRT试验。根据他的修改,可以生成用于WinRT的静态库,连接到WinRT app也不是问题了。

但执行的时候,仍然不行。因为python在运行的时候需要Lib目录下的一些文件,而那些文件即使放入WinRT的部署目录,也没法被import。我跟踪了很久也没发现它的import是如何读取文件的,但却发现了zipimport用的是fopen之类WinRT支持的函数。所以,只要把Lib目录和你自己的py脚本都放到一个zip包里,在调用Py_Initialize前用Py_SetPath指定给python。这样一来,WinRT下只要单纯一个存放.py的zip包,就能正常使用python脚本引擎,其他代码都不用改。

未来

下一步还打算做个可用的android支持。其实问题也是出在import上。既然发现了zipimport的方法,以后也可以进一步尝试在android上这么来完成import。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值