编写同时在python 2和python 3上运行的程序的最简单方法。
pies的Python项目详细描述
我们吃点派吧!
安装馅饼
pip install pies
或者如果您愿意:
easy_install pies
概述
pies是一个python2&3兼容层,其原理是 代码应该是python3代码。从这个角度出发意味着 当运行在python3馅饼几乎没有增加开销。
而不是提供一堆自定义方法(导致python代码 在任何版本上看起来都不合适)pies的目标是支持端口 python3 api对python2的调用、导入和对象 只有在绝对必要时才使用特殊语法。
馅饼和六个有什么不同?
馅饼比六个小得多,也简单得多,因为它假定 开发人员尽可能使用与python 3兼容的 python 2.6+中包含的版本,而six试图维护 与Python2.4兼容-导致更多重写和 深入到不同的语言领域。另外,如前所述 上面,如果可能的话,馅饼可以让你不必改变 完全是语法。
将馅饼融入你的饮食中
将PIES使用并集成到现有的Python 3 +代码库中 实现python 2&3双重支持)再简单不过了:
from __future__ import absolute_import, division, print_function, unicode_literals from pies.overrides import *
然后简单地编写标准python3代码,并享受python2支持。
工作不变(良好)
pies最棒的部分是python3代码在 Python2
功能:
- 圆形
- 下一步
- 过滤器
- 地图
- 拉链
- 输入
- 范围
类型:
- 对象(str在所有版本的 Python)
- chr(在python2中创建unichr对象)
- str(在python2中创建unicode对象)
- dict(使用dict()创建dict将为您提供 python3 itemview结果,但使用{}不会)
导入:
- HTML
- http
- xmlrpc
- 螺纹
- 内置
- 配置分析器
- copyreg
- 排队
- reprlib
- socketserver
- IP地址
- argparse
- 枚举(还将此库添加到Python3.0-3.3)
不同的进口(坏的)
一些python3模块与python2相比已经移动了太多。 对应的,我发现有必要创建 在这两个环境中都可以获得python3的命名。自从这些 模块已经存在,允许它们由 python3模块名不能直接命名。相反,您必须导入 这些模块来自pies。
示例:
from pies import pickle
完整列表:
- 数据库管理
- urllib
- 收藏
- 功能工具
- imp
- ITertools
- 泡菜
- 字符串
- 系统
- 单元测试
特殊语法(丑陋的)
遗憾的是,仍然有一些特殊的语法存在于角落的情况下。
- py2-如果在python2上运行,则为true
- py3-如果在python3上运行,则为true
- u('text')-应替换为便于移植而提供的u'text' python2的代码
- itemsview(collection)-应替换collection.iteritems(),其中 您不能控制传入的集合
- valuesView(collection)-应替换collection.values(),其中 不要控制传入的集合
- keysview(collection)-应该在 不控制传入的集合
- execute()-在 环境。
- 整数类型-ma要使用IsInstance(变量、整数类型) 而不是类型(变量,int),因为在 Python2号。
- newClass(使用_元类(元类,父类))-应替换 “元类=元类”和“newClass(元类=元类)” 作为一种分配元类的方法。
有什么可以改进的?
我敢肯定有很多。如果你遇到任何问题或有任何想法 请毫不犹豫地提出一个错误,提交一个请求,或电子邮件给我 在timothy.crosley@gmail.com。
谢谢,我希望你喜欢派!
~timothy crosley