从源代码构建 Python 时为 ./configure 使用哪些标志

What flags to use for ./configure when building Python from source

提问人:RTC222 提问时间:11/14/2021 最后编辑:MattDMoRTC222 更新时间:11/15/2021 访问量:950

问:

我正在 Ubuntu 18.04 上从源代码构建 Python 3.10,遵循几个 Web 链接的说明,主要是 Python 网站 (https://devguide.python.org/setup) 和 RealPython (https://realpython.com/installing-python/#how-to-build-python-from-source-code)。我将 Python-3.10.0.tgz 解压缩到 .我有三个问题。/opt/Python3.10

首先,Python网站说要使用,而RealPython说要使用。另一个消息来源说包括和.以下哪一个最好?我应该使用所有这些标志吗?./configure --with-pydebug./configure --enable-optimizations --with-ensurepip=install--enable-shared--enable-unicode=ucs4

其次,我目前安装了 Python 3.6 和 Python 3.8。它们安装在 下的多个目录中。按照我在 Web 上看到的说明,我在 /opt/Python3.10 中构建。我假设(最后的构建步骤)将负责将构建安装在 下的常用文件夹中,但目前尚不清楚。我应该使用,尽管没有一个网络资源提到这样做?/usrmake altinstall/usr./configure --prefix=directory

最后,安装过程会减慢多少?--enable-optimizations

这是我第一次从源代码构建 Python,这将有助于解决这些问题。感谢您的帮助。

蟒蛇 python-3.x

评论


答:

7赞 MattDMo 11/14/2021 #1

欢迎来到 Python 构建配置的世界!我将逐一介绍命令行选项。./configure

--with-pydebug适用于核心 Python 开发人员,而不是仅使用 Python 的开发人员(如您和我)。它创建调试符号并减慢执行速度。你不需要它。

--enable-optimizations从长远来看,这对性能有好处,但代价是将编译过程延长了 3 倍(或更多),具体取决于您的系统。但是,它会导致更快的执行速度,因此我会在您的情况下使用它。

--with-ensurepip=install很好。您需要最新版本的 .pip

--enable-shared就您而言,可能不是一个好主意,所以我建议不要在这里使用它。阅读静态库和共享库之间的区别? 了解其中的区别。基本上,由于您可能会安装到几乎可以肯定不在系统共享库搜索路径上的非系统路径(见下文),因此您很可能会遇到问题。静态构建将所有部分都放在一个地方,因此您可以从任何地方安装和运行它。这是以牺牲大小为代价的 - 二进制文件将相当大 - 但对于非系统管理员来说非常有用。即使您最终安装到 ,我也会争辩说静态比共享更好/更容易。/opt/localpython/usr/local

--enable-unicode=ucs4是可选的,并且可能与您的系统不兼容。你不需要它。 足够聪明,可以找出最好的 Unicode 设置。此选项是构建说明中遗留的,这些说明已经过时了。./configure

--prefix如果该目录已经存在并且在您的 中,或者如果您知道如何编辑您的 .否则,请使用 或 . 是本地软件安装(即 Ubuntu 不附带的内容)的指定系统范围位置,并且可能已经在您的 . 始终是一个不需要使用 的选项,从安全角度来看,这很棒。如果它不存在,则需要添加到您的中。--prefix=/opt/local$PATH$PATH~/.bashrc/usr/local$HOME/usr/local$PATH$HOMEsudo/home/your_username/bin$PATH