编写一个在Python 2和Python 3上都能运行的程序的最简单方法。
项目描述
编写一个在Python 2.6+和Python 3上都能运行的程序的最简单(也是最美味)的方法。
让我们来尝一尝派!
安装pies
pip install pies
或者如果你更喜欢
easy_install pies
概述
Pies是一个Python2 & 3兼容层,其理念是所有代码都应该是Python3代码。从这个观点出发意味着当在Python3上运行时,pies几乎不会增加任何开销。
而不是提供一大堆自定义方法(导致在任何版本上看起来都不合适的Python代码),pies旨在将尽可能多的Python3 API调用、导入和对象回移植到Python2 - 只在绝对必要时才依赖特殊语法。
pies与six有何不同?
与六个相比,pies 显著更小、更简单,因为它假设对于所有可能的情况,开发者都在使用 Python 2.6+ 及以上版本中包含的与 Python 3 兼容的版本,而 six 则试图与 Python 2.4 保持兼容性,导致大量覆盖和更深入的差异。此外,如上所述,pies 尽可能地让您不需要更改语法。
将 pies 集成到您的项目中
将 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 中如何无需修改即可运行
函数
round
next
filter
map
zip
input
range
类型
object(str 在 Python 的所有版本上都具有正确的行为)
chr(在 Python2 中创建一个 unichr 对象)
str(在 Python2 中创建一个 unicode 对象)
dict(使用 dict() 创建字典将获得所有特殊的 Python3 itemview 结果,但使用 {} 则不会)
导入
html
http
xmlrpc
_thread
builtins
configparser
copyreg
queue
reprlib
socketserver
ipaddress
argparse
enum(也添加了此库到 Python 3.0-3.3)
不同的导入(缺点)
一些 Python3 模块与它们的 Python2 对应物相比变动很大,因此我发现在两个环境中获得 Python3 命名是有必要的。由于这些模块已在 Python2 中存在,因此无法直接通过 Python3 模块名导入它们。相反,您必须从 pies 中导入这些模块。
示例
from pies import pickle
完整列表
dbm
urllib
collections
functools
imp
itertools
pickle
StringIO
sys
unittest
特殊语法(缺点)
遗憾的是,仍然存在针对特殊情况的特殊语法。
PY2 - 如果在 Python2 中运行则为 True
PY3 - 如果在 Python3 中运行则为 True
u('text') - 应该替换 u'text' 以方便将代码从 Python2 迁移
itemsview(collection) - 应该替换 collection.iteritems(),其中您无法控制传入的集合
valuesview(collection) - 应该替换 collection.values(),其中您无法控制传入的集合
keysview(collection) - 应该替换 collection.keys(),其中您无法控制传入的集合
execute() - 在两个环境中启用 Python 3 风格的 exec 语句。
integer_types - 可能希望使用 isinstance(variable, integer_types) 而不是 type(variable, int),因为在 Python2 中长值将不会匹配 int。
NewClass(with_metaclass(metaclass, parent_class)) - 应该替换 “metaclass = metaclass” 和 “NewClass(metaclass=metaclass)” 作为分配元类的方式。
可以改进什么?
我非常确信有很多可以改进的地方。如果您遇到任何问题或有任何想法,请毫不犹豫地提交错误报告、提交拉取请求或通过电子邮件与我联系timothy.crosley@gmail.com。
感谢您,希望您喜欢 pies!
~Timothy Crosley
项目详情
下载文件
下载您平台对应的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
pies-2.6.7.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e8a76923ce0e0f605240901983fe492814a65d3d803efe3013a0e1815b75e4e9 |
|
MD5 | ba3c3f6bd4d32db114f0dc51b42d3d80 |
|
BLAKE2b-256 | 54d2aab9e975477e75e47608417e9610a9e47721a7c889e42be5cc363280087f |
pies-2.6.7-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 79a652dddc64c6fa42c7dfe9686ae7b1d856391094b873e2f52fcd0bd662c102 |
|
MD5 | 847058134ebf7ceac107a6db97d9178e |
|
BLAKE2b-256 | 2c9332c096670cfe9310f12e038e8228485d7d97cb59221709657c2ae38eaee2 |