移植

Supporting Python 3(支持python3)——使用现代的风格改善你的代码

99封情书 提交于 2019-12-06 20:48:29
使用现代风格改善你的代码 原文: http://python3porting.com/improving.html 译者: TheLover_Z 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码。这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了。但我还是要提一下它们,因为知道了这些以后你的代码可以从中获益。我说的包括修饰器,在 Python 2.2 开始提供支持; sorted() 方法,在 Python 2.4 开始提供支持;还有上下文管理,在 Python 2.5 开始提供支持。 这里提及的其它新特性在 Python 2.6 或者 2.7 都提供了支持,所以说如果你不是在用 Python 2.5 和之前的版本的话,你可以使用这里提到的几乎全部的新特性。 使用 sorted() 来替代 .sort() 在 Python 中,列表有一个 .sort() 方法可以进行排序。 .sort() 会影响列表的结构。下面这么写是因为在 Python 2.3 之前只能这么写。 >>> infile = open('pythons.txt') >>> pythons = infile.readlines() >>> pythons.sort() >>> [x.strip() for x in pythons] ['Eric', 'Graham',

Supporting Python 3(支持python3)——关于本书

橙三吉。 提交于 2019-12-06 20:47:13
关于本书 这本书书是源码在GitHub [5] 上的开放性的书,所以任何人都可以给本书提供贡献(在湖闻樟译注: 原文提供pdf版,购买价格可以自定,有条件的话建议扶持下)。作者和编辑是Lennart Regebro,以及以后贡献者将列在这里。 这本书是在reStructuredText [1] ,里写的,使用Sphinx [2] 和LaTeX [3] 排版 以及使用CreateSpace [4] .印刷。各部分的字体:TeX Gyre Schola主体文本, DejaVu Sans Mono 代码 以及Flux Bold 标题。 封面来自 Emmanuel “Tambako” Keller , http://www.flickr.com/photos/tambako/ 在本书的网页有一个勘误表, http://python3porting.com/ . Lennart Regebro(在湖闻樟注:作者)想要感谢下面这些为了更本提供帮助的人: Andreas Braukmann , Nicholas Coghlan , Paul Everitt , Cris Ewing , Luca Fabbri , Russell Ferriday , Patrick Gerken , Janko Hauser , Domen Kožar , Baptiste Mispelon ,

Supporting Python 3(支持python3)——序

耗尽温柔 提交于 2019-12-06 20:46:48
序 当我在2002年6月加入python-dev邮件列表时,“Python 3000"(在湖闻樟译注:即Python 3)的团队每隔几个月都会描述一个Python 开发团队希望他们实现的建议,但是因为兼容性的原因都没有办法做到。对我们来说为“Python 3000 可能是“做一些事意味着没有发生任何变化。 但是后来我们开始越来越经常地说在Python 3000可能发生的事。最终到了“Python 3000”因为内部程序员的惰性被经常引用成缩写“py3k”的时候。 然后我们开始相信像我们大肆宣传的那样py3k将会更加好。到了Andrew Kuchling创建了用于跟踪我们在2004年底对py3k各种想法的EP PEP 3100(这是我最终负责的PEP 3000的原型)的时候 ,我们实际上要通过对py3k的一个“疯狂”的想法。这导致了在2006年3月开始了严肃地开发以及最终在2008年12月3日释放了Python 3.0。 当这些正在发生时,在社区上有对创建Python 3 的可行性/理智的复杂感情。在PEP 3100被创建的2004年,Python的流行程序有了明显的提升。这种趋势持续及在2006年左右,当py3k的开发全面开展时,Python的受欢迎程序已经超过了Perl。所能当Python成为世界上最流行的动态编程语言时,开发团队正在开始开发将下一个大版本

Qtopia 2.2.0的编译和移植(一)

一曲冷凌霜 提交于 2019-12-06 10:20:26
新项目中需要做界面,决定使用Qt框架开发,刚好我在前一个项目中是做这个的,就接手了。由于上一个项目我选用的是Qt-4.7的版本,包括PC版本和嵌入式版本,而这次项目打算用半现成的Qtopia2.2.0版本,考虑到库的存储空间大小和性能需求,不得不说Qt4.7的嵌入式版本编出来的库很占用空间。因为Qtopia2.2.0是别的公司 弄好的,不过还是需要自己理清整个编译、移植的步骤过程,不然以后开发会很麻烦,还好有点经验,只是Qtopia2.2.0确实有点旧了,2005的版本,我现在都找不到官方的版本了。整了两天,基本是搞定了它的编译和移植过程,顺便写了个自动化脚本,自我感觉良好。 开发环境 PC机:Ubuntn 12.10 Server(Linux 3.5.0),gcc-4.7.2(g++) 目标机:ARM9, Linux 2.6.24 编译前环境准备 X11库 Qtopia编译过程中需要使用X11 里面的一些头文件来生成一些工具,主要是qt2的编译,当然里面的dqt编译肯定是需要用到X11的头文件和库的。使用以下命令即可安装需要X11的环境: <!-- lang: shell --> sudo apt-get install libx11-dev libxext-dev libxtst-dev uuid库和xmu库 编译过程中会使用到这些库,安装命令: <!-- lang:

Supporting Python 3(支持Python 3)——目录

£可爱£侵袭症+ 提交于 2019-12-06 05:46:34
Supporting Python 3(支持Python 3) 关于本书 关于术语 序 欢迎来到Python 3 是时候了吗? 如果我现在不能切换会怎么样? Python 和它的版本 更多资源 迁移策略 仅支持Python 3 Python 2和Python 3的单独分支 使用2to3转换到Python 3 使用Distribute来支持2to3转换 无需转换支持Python 2 和 Python 3 使用3to2 哪种策略适合你? 应用 Python模块和包 框架 结论 为Python3作准备 在Python 2.7下运行 当除以整数时用//代替/ 使用新式的类 单独的二进制数据和字符串 当排序时,使用key来代替cmp 使用丰富的比较运算符 相对棘手的 实现 __hash__() 确保你没有用任何一个被移除的模块 测试覆盖率和tox 可选:在字典中使用迭代器方法(iterator-methods) 2to3 使用2to3 明确的固定器(fixers) 分发包 在安装时执行2to3 使用Distribute支持多个版本的Python 使用Distribute运行测试 使用Distribute运行2to3 常见的迁移问题 不正确的引入(import) 相对引入问题 Unorderable类型、__cmp__和cmp 排序 排序Unicode 字节、字符串及Unicode 字节文字

Supporting Python 3——迁移python2的c扩展到python3

妖精的绣舞 提交于 2019-12-06 05:45:49
迁移C扩展 Python 3有很多在C语言API上的变化,包括在API中定义类和初妈化的模块。这意味着每一个C扩展为了能在Python 3 下运行需要进行修改。一些变化很简单而另一些不简单,但是因为2to3只处理Python代码,你不得不对这些变化进化手动处理。这也意味着不你能通过2to3的转换来同时实现Python 2和Python 3的支持。幸运的是,C预处理程序可以很容易地实现使用相同的代码支持Python 2和Python 3.这是一个使在C中支持不同版本API的标准方式,这也将成为C程序员的标准技能。因此没有丑陋的黑客参与,只是少了些漂亮的 #if 和# ifndef 语句。 在你开始前 有一些事情你可以在真正开始移植前先做。首先是移除一些你根本不需要的老别名的用法。例如RO宏已经被删除了。它只是一个简写的READONLY,因些如果你在代码中用了RO,你可以使用READONLY来替代它。其他常见的重定义是 statichere 和 staticforward。 他们是为了兼容特定编译器的变通方法。对于表现良好的编译器他们只是 static 的重定义,因此在CPython支持的所有平台都有表现良好的编译器的当今Python 3已经不需要他们了。如果你在代码中使用了他们,你可以用 static 来代替。 其他在移植你可以做的变化是摆脱 PyClassObject

Supporting Python 3(支持python3)——语言区别和暂时解决方法

我是研究僧i 提交于 2019-12-06 05:45:32
语言区别和暂时解决方法 这个附录包含一个Python 2和Python 3的不同之处列表以及能不用2to3转换同时在Python 2和Python 3下运行的示例代码。 这个列表是不完整的。在这里列出的只有不包括bug修复的策划变化,即使如此也可能有意外的遗漏。 apply() 2to3 fixer ☑ six support ☐ Python 2的内置apply()在Python 3已经被移除。它用于调用一个函数,但由于你可以直接调用函数它并没有什么用并从Python 2.3起被废弃了。没有替代方案。 buffer() 2to3 fixer ☑ six support ☐ Python 2的buffer()内置函数被Python 3的类memoryview取代了。他们是不完全兼容,所以2to3除非你显示指定buffer固定器否则不会修改这个。 这个代码能不用2to3转换在Python 2和Python 3同时运行: >>> import sys >>> if sys.version_info > (3,): ... buffer = memoryview >>> b = buffer('yay!'.encode()) >>> len(b) 4 callable() 2to3 fixer ☑ six support ☑ Python 2的内置callable()在Python 3

Supporting Python 3——不使用2to3转换支持Python 2和Python 3

可紊 提交于 2019-12-05 08:37:19
不使用2to3转换支持Python 2和Python 3 虽然Python 3的官方文档努阴人们写同时支持Python 2和Python 3的代码,但是在一此情况这是合适的。尤其是你不能放弃支持Python 2.5及更早的版本时,因为Python 2.6引进了相当多的向前兼容。 使相同的代码在更新的版本同样运行是有可能的,不过你开始进入Python 3文档中提到的“扭曲”的代码风格。我会使用一些技巧来做这些并且我在本章末尾提到的six模块会提供很多帮助。它甚至在一些比较大的项目中使用,但是我通常不推荐在在型项目中使用。对于小项目或者大项目的一部分,例如引导脚本,不使用2to3来支持老的Python版本是最好的解决的方式。 Python 2.7对Python 3的兼容有一些小改进,但如果你想要在Python 2和Python 3下执行相同的代码,似乎你必须要在将来的一段时间内支持Python 2.6。 很多你需要的修改将会被2to3处理,所以开始转换你的代码你事实上需要首先在你的代码上运行2to3并且确保你的代码可以在Python 3下运行。它通常很容易,或者至少在Python 3代码中引入Python 2兼容比在Python 2中引入Python 3代码更不单调。 一旦你有一个在Python 3下的项目,偿试在Python 2.6下运行他们。在这一步你可以执行出语法错误

android-- A10开发板--Tslib 移植心得体会

孤街浪徒 提交于 2019-12-04 21:58:04
1. tslib ,其实从他的名字就可以看出它的,它是 touchscreen 的 lib, 其实这样还不够具体,其实它开始确实是为了 touchscreen 的鼠标驱动而发展起来的,且只是一个中间处理库,即将原始数据进行调整,比如触摸屏定位。只不过后来不知道什么原因,它火了,其他图形都支持这种方式,像高级版本的 minigui , qt 等成熟嵌入式图形系统。正因为如此,它也就不再局限于 touchsrceen, 只要是输入设备,只需在 tslib 里实现,标准的图形系统只需调用 tslib 的函数即可。 它将其他的输入设备数据处理后成为一个虚拟设备的数据,其他的图形系统只需使用这个虚拟的设备即可实现输入设备的读写操作了。后来发现 tslib 只不过是一个 应用级软件 ,其他的图形系统使用的是 tslib 的函数,因此需要依赖这个库 . 2. 开发环境 : Ubuntu 10.0.4 开发板 A10 交叉编译器 android 平台的 arm-none-linux-gnueabi 3. tslib 源码所在位置 https://github.com/kergoth/tslib 下载压缩包,解压,将文件夹拷贝到 Ubuntn 任意位置 4. 进入文件夹 生成 configure ./autogen.sh 如果报错: http://blog.csdn.net/ypoflyer

ok6410开发板移植DirectFB手记

痴心易碎 提交于 2019-12-04 11:08:38
操作系统:虚拟机 uBuntu 10.04.3 交叉编译工具链:arm-linux-4.4.1 内核镜像:Linux-2.6.36 对应的 zImage 文件系统:Linux-2.6.36 对应的 FORLINX_6410_touch.cramfs 源码包: directFB 源码包 DirectFB-1.4.9.tar.gz http://www.directfb.org/index.php?path=Main%2FDownloads freetype 源码包 freetype-2.4.8.tar.gz http://freetype.sourceforge.net/index2.html libjpeg 源码包 jpegsrc.v8d.tar.gz http://www.ijg.org/ libpng 源码包 libpng-1.5.8.tar.gz http://www.libpng.org/pub/png/libpng.html zlib 源码包 zlib-1.2.5.1.tar.gz http://www.zlib.net/ 补丁文件: DirectFB 1.4.9支持Libpng 1.5.x所需的补丁 DirectFB-1.4.9-libpng-1.5.patch http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo