Python | 开发者必备的 6 个库
无论你是正在使用 Python 进行快速开发,还是在为 Python 桌面应用制作原生 UI ,或者是在优化现有的 Python 代码,以下这些 Python 项目都是应该使用的。
Python 凭借其易用的特点,已经被工业界和学术界广泛采用。另一方面,Python 丰富的第三方项目——库、附加组件,和辅助的开发成果——使得 Python 语言的应用范围被不断扩大。
其中一些项目,比如 PyInstaller 和 WxPython ,为那些制作桌面应用和终端应用的 Python 开发者提供了便利。
其他的项目, 比如 PyPy , 则是用来给服务器端 Python 应用提供额外的动力。还有一些,像 PBR 、CFFI 和 MyPy , 适用于差不多所有五花八门的 Python 应用,无论在什么地方运行。
如果你是一个 Python 开发者,所有这六个项目都值得你来熟悉一下。而且所有这些项目,在近几周都发布了新的主要版本。
Python 必备之 PyPy
PyPy 主要用于何处?
如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。
不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。PyPy 5.9 在解决这个问题上取得了重大进展。
PyPy 5.9 的功能
数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本上。这些框架的大部分问题来源于 PyPy 与现有 C 代码的接口。为了解决这个问题,PyPy 5.9 对 CFFI 库(见下文)和 PyPy 的 Python C API 兼容性层进行了改进。
此外,在 5.9 发布版本中,PyPy 的 JSON 解析器在处理多种 JSON 对象,尤其是那些重复使用的相同的词典键值时,明显更快。
何处下载 PyPy 5.9
你可以直接从 PyPy 的网站下载二进制版本:https://pypy.org/download.html 官方二进制文件包括 Windows、Mac OS 和 Linux 的不同 CPU 架构。
请注意,为了兼容 Python 2.7 和 Python 3.5 ,存在不同的二进制文件,因此请确保你正在获取与你将要运行的脚本所匹配的版本。
BitBucket 上有源代码和错误跟踪记录:https://bitbucket.org/pypy/pypy
Python 必备之 CFFI
CFFI 主要用于何处?
C 外部函数接口库(CFFI)(https://cffi.readthedocs.io/)为 Python 应用程序与独立 C 库的交互提供了一种机制。
虽然 Python 的 stock 版本,CPython,也拥有自己的库来完成此类功能,称为 Ctypes ,但对 Python 用户来说,比起 Ctypes ,CFFI 使得与 C 库的交互更容易、更简便。
CFFI 1.11 的功能
与 PyPy 一起更新的 CFFI v1.11 (https://cffi.readthedocs.io/en/latest/whatsnew.html#v1-11)增加了很小但很有用的改动。
现在可以在即将发布的 Python 3.7 上使用betas了,在 Windows 上更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和 char16_t和char_32t 类型。最后两个也是最重要的,在 C 库中默认使用 Unicode 编码。
何处下载 CFFI 1.11 ?
CFFI 在 Python Package Index 上可以单独下载:https://pypi.python.org/pypi/cffi
或通过 Python 的 pip 工具安装:pip install cffi 。源码和问题跟踪可以在 BitBucket(https://bitbucket.org/cffi/cffi) 上找到。
Python 必备之 PyInstaller
PyInstaller 主要用于何处?
关于 Python 的最常见的问题之一是“如何从 Python 脚本中生成独立的可执行文件?” PyInstaller (https://github.com/pyinstaller/pyinstaller)一直是对此最好的答案之一。
PyInstaller 3.3 的功能
PyInstaller 将 Python 应用程序打包到单目录或单文件的可执行文件中,捆绑任何所需的第三方库,并可与绝大多数常见的库和框架配合使用。
PyInstaller 3.3 中最大的改进是对 Python 3.6 的支持,因为鉴于 Python 3.6 已经发布这确实是必要的。
PyInstaller 3.3 (https://github.com/pyinstaller/pyinstaller/releases/tag/v3.3)还包括一个更广泛兼容的引导加载程序,适用于 Windows 可执行文件,并扩展了对捆绑常见库(如 QT、GTK +、NumPy 和 Django )的支持。
PyInstaller 在不久之后可能添加的一个功能是交叉打包,例如,在 Windows 上创建 Mac 兼容的应用程序。你需要在要部署的同一平台上运行该 PyInstaller ,无论是 Windows、Mac 还是 Linux 。
何处下载 PyInstaller 3.3 ?
PyInstaller 可以通过 Python Package Index 安装:https://pypi.python.org/pypi/PyInstaller/3.3
也可通过 Python 的 pip 工具安装:pip install pyinstaller 。对于那些需要自己编译引导加载程序的人,源码可以在 GitHub (https://github.com/pyinstaller/pyinstaller)上找到,但对多数人而言是不需要这么做的。
Python 必备之 Python Build Reasonableness (PBR)
Python PBR 主要用于何处?
Setuptools 是用于打包 Python 项目的标准的 Python 问题子系统。
管理特定项目的 Setuptools 可能会变得非常繁琐,特别是在自动生成需求、管理文档文件或编辑项目贡献者数据时。
Python PBR 的功能
PBR(https://docs.openstack.org/pbr/latest/), Python Build Reasonableness 的缩写,是以一致的方式用于管理 Setuptools 包的库。
它可以自动化许多 Setuptools 打包的设置,例如版本号、生成作者和 ChangeLog 文件,以及生成 Sphinx 风格的文档。
PBR 最初是作为 OpenStack 项目的一部分开发的,但现在你所使用 PBR 中维护的内容与 OpenStack 已经没有任何联系了。
哪里可以下载 Python PBR ?
PBR 在 Python Package Index 上可以找到:
https://pypi.python.org/pypi/pbr 并且可以和 pip 一起安装,只需要输入 pip install pbr 即可。 源码可在 GitHub (https://github.com/openstack-dev/pbr)上下载。
Python 必备之 WxPython
WxPython 主要用于何处?
想要实现跨平台桌面应用程序的 Python 开发人员可以从多个工具包中进行选择。
WxPython(https://wxpython.org/),是 WxWidgets(https://www.wxwidgets.org/) 库的一个封装,使用了其所支持主机平台的原生 UI 元素,包括 Windows、Mac、Linux 和其他类 Unix 操作系统。
WxPython 4.0 的功能
早期版本的 WxPython 被放弃了是由于其传统的设计决策,使其变得越来越慢,而且不太适合使用。
为了解决这个问题,WxPython 的开发人员对 WxPython 的 4.0 分支做了重大改变。
目标是允许开发人员更快地上手 WxPython ,并且使通过它创建的框架和应用程序更加高性能和易维护。然而,为了使用 WxPython 4.0 ,任何现有的使用 WxPython 项目都需要修改(https://wxpython.org/Phoenix/docs/html/MigrationGuide.html)。
哪里可以下载 WxPython 4.0 ?
WxPython 4.0 官方版本依然是 beta 版。它可以在 Python Package Index 上找到:https://pypi.python.org/pypi/wxPython/4.0.0b2 即通过 pip install wxpython 命令。在正式发布前它可能会更新数次,注意经常检查更新。
那些想直接破解的人可以查看 GitHub 上的代码库(https://github.com/wxWidgets/Phoenix)。请注意,WxPython 的 4.0 分支以 “Phoenix” 代号进行标记的,以使其与早期版本不同。
Python 必备之 Mypy
Mypy 主要用于何处?
Python 的动态性既是一种福音,也是一种烦恼,对于快速构建软件非常棒,但是当代码难以推理、测试和调试时,并不是很棒。
Mypy(http://www.infoworld.com/cms/article/mypy-lang.blogspot.com) 在编译时向 Python 添加静态类型检查,使 Python 程序更加一致和可维护,并且不会增加运行时开销。
Mypy 0.530 的功能
Mypy 0.530 (http://mypy-lang.blogspot.com/2017/10/mypy-0530-released.html)添加了不同协议(http://mypy.readthedocs.io/en/latest/class_basics.html#protocols-and-structural-subtyping)的支持,该协议是用于 Python 子类的目前实验性类型的功能。
它还在仅用于包含特定类型的对象的字典中添加 “TypedDict” 类型,并且可以逐个对文件进行更严格的类型检查的选项。
哪里可以下载 Mypy 0.530 ?
Mypy 可以在 Python Package Index 上找到:https://pypi.python.org/pypi/mypy 并通过 pip install mypy 来安装。那些对 Mypy 实现感兴趣的人可以通过 GitHub (https://github.com/python/mypy)检出源码。