43.1. Python 2 vs. Python 3

PL/Python支持Python 2和Python 3语言变量。 (PostgreSQL安装操作指南可能包含确切的支持低版本的Python更精确的信息。) 因为Python 2 和 Python 3语言变量在某个重要的方面是不相容的, PL/Python使用以下命名和过渡方案,以避免混合它们:

这个模式类似于PEP 394 中推荐的那个,关于python命令的命名和过度。

它取决于编译配置或者安装包PL/Python对Python 2或Python 3或者两者都可用。

提示: 编译变量取决于在安装期间发现了哪个Python版本或使用PYTHON 环境变量明确设置了哪个版本,参见第 15.4 节。 要在一个安装中可用PL/Python的两个变量,必须配置源代码树并编译两次。

产生下列用法和迁移策略:

关于迁移到Python 3的更多信息参见文档 Python 3.0中的新特性

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