Python 2的3次幂。一个轻量级移植辅助库。
项目描述
Eight是一个Python模块,提供了一个简洁的兼容层,用于在Python 3和2之间。Eight允许您为Python 3.3+编写代码,同时提供与Python 2.7的有限兼容性,无需代码更改。Eight受到了six、nine和python-future的启发,但提供了更好的国际化(i18n)支持,更轻量级,更易于使用,并且明确偏向于Python 3代码:如果您从代码中移除eight,它将继续像在Python 3上使用eight时那样正常工作。
要编写可移植到Python 2的Python 3代码,您可能还想阅读Armin Ronacher的优秀的Python 3移植指南,以及官方的移植指南。
在Python 3中,将from eight import *写入代码是一个空操作。在Python 2中,它将许多Python 3的名称绑定到它们的Python 2等效名称。此外,如果您需要导入在Python 3中被重命名的模块或模块成员,则写入from eight import <module>将执行正确的操作(在Python 3中相当于import <module>,在Python 2中相当于import <old_name> as <module>)。最后,eight可以选择性地包装您的标准流和环境变量I/O以使用文本,而不是字节(见下文)。
安装
pip install eight
概述
from eight import *
from eight import queue
from eight.collections import UserList, deque
如果您使用print、除法、非ASCII文本书面语或相对导入,您还应在每个源文件顶部添加此未来导入
from __future__ import (print_function, division, unicode_literals, absolute_import)
包装stdio
Eight提供了对sys.stdin、sys.stdout和sys.stderr的包装,以使它们(以及使用它们的方法)表现得像在Python 3中一样。具体来说,在Python 3中,这些流接受文本数据,它们的.buffer属性引用接受字节的底层流。Eight使用io模块为您完成此操作,但为sys.stdout和sys.stderr的TextIOWrapper类子类化以在Python 2上将非Unicode输入强制转换为Unicode(否则,由于Python 2的语义,异常打印等将停止工作)。
要启用stdio包装,请使用以下内容
import eight
eight.wrap_stdio()
要撤销对任何流的此操作的效果,请使用detach方法,例如sys.stdin = sys.stdin.detach()(但请记住,在eight.USING_PYTHON2上对此进行条件判断)。有关更多信息,请参阅io模块文档。
解码命令行参数
Eight提供了一个实用函数来解码Python 2中sys.argv的内容(就像Python 3所做的那样)。它使用sys.stdin.encoding作为编码来执行此操作
import eight
eight.decode_command_line_args()
decode_command_line_args()的调用用其解码后的内容替换sys.argv并返回新内容。在Python 3中,此调用是一个空操作(它返回sys.argv并保持其不变)。
包装环境变量获取器和设置器
Eight提供了一些实用包装器,以帮助将Python 2的环境变量访问和分配与Python 3保持一致:将输入编码到os.putenv(用于例如os.environ[x] = y的语句)和解码os.getenv的输出(用于x = os.environ[y])。使用wrap_os_environ_io()将这些包装器猴子修补到os模块中
import eight
eight.wrap_os_environ_io()
在Python 3中,此调用是一个空操作。
从自助餐中选择
您可以通过运行IPython并输入import eight,然后输入eight.<TAB>来查看from eight import *将执行什么操作。以下是完整的可用列表
ascii
bytes
chr
filter
hex
input
int
map
oct
open
range
round
str
super
zip
您可以通过明确列出它们来导入这些符号。如果出于任何原因您发现导入所有这些有问题(这是推荐的),当然可以导入子集。
除了通过 from eight import * 导入的名称外,以下模块也可用,并在需要时使用 from eight import <name> 按名称导入。
queue(旧名称:Queue)
builtins(旧名称:__builtin__)
copyreg(旧名称:copy_reg)
configparser(旧名称:ConfigParser)
reprlib(旧名称:repr)
winreg(旧名称:_winreg)
_thread(旧名称:thread)
_dummy_thread(旧名称:dummy_thread)
以下模块具有在 Python 2 中位于其他位置的属性:待办事项
致谢
Python-future 用于进行大量 Python 3 功能的向后移植。
链接
错误
请在 GitHub 上报告错误、问题、功能请求等。
许可证
根据 Apache 许可证第 2 版 许可。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分发
构建分发
eight-1.0.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6465970d3c12a1d759151690629b10b50ffb124c9b62e912999ee9233378a562 |
|
MD5 | c140d3904ff8522988bf555596a45958 |
|
BLAKE2b-256 | fb1716e936433e7eb99ae62080846e6a47b3cbfea645ae59e25db2d6560570c0 |
eight-1.0.1-py2.py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | bd6967ec7cf9e61ab18b55751236ed89a8363cfcb69127aace336869615245d5 |
|
MD5 | 7d04a7a2826cc3caae60b578dfcd0bcd |
|
BLAKE2b-256 | d9170bc3026bbd6ee63dcff9a276a3db4ab11d845ba748aab8cdf20fa4d241f8 |