45.1. Python 2 与 Python 3

PL/Python 支持 Python 2 和 Python 3 语言变体。 (PostgreSQL 的安装说明可能包含有关确切支持的次要版本的 Python 的更准确的信息.)由于 Python 2 和 Python 3 语言变体在某些重要方面不兼容,因此 PL/Python 使用以下命名和转换方案来避免混合它们:

此方案类似于PEP 394中有关python命令的命名和转换的建议。

是否可以使用适用于 Python 2 的 PL/Python 或适用于 Python 3 的 PL/Python 取决于构建配置或已安装的软件包。

Tip

构建的变体取决于在安装过程中找到哪个 Python 版本,或者使用PYTHON环境变量明确设置了哪个版本;参见Section 16.4。为了使两种 PL/Python 变体在一个安装中均可用,必须对源树进行配置和构建两次。

这导致以下使用和迁移策略:

实际上,许多 PL/Python 函数几乎无需更改就可以迁移到 Python 3.

另请参阅文档Python 3.0 的新增功能,以获取有关移植到 Python 3 的更多信息。

不允许在同一会话中使用基于 Python 2 的 PL/Python 和基于 Python 3 的 PL/Python,因为动态模块中的符号会发生冲突,这可能导致 PostgreSQL 服务器进程崩溃。有一项检查可以防止在会话中混合使用 Python 主要版本,如果检测到不匹配,它将中止会话。但是,可以在同一数据库中的不同会话中使用这两种 PL/Python 变体。

上一章 首页 下一章