从源代码构建Python时使用哪些标志来运行./configure?

6
我正在Ubuntu 18.04上从源代码构建Python 3.10,按照多个网站的说明进行操作,主要是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网站建议使用./configure --with-pydebug,而RealPython建议使用./configure --enable-optimizations --with-ensurepip=install。另一个来源建议包括--enable-shared--enable-unicode=ucs4。哪个最好?我应该使用所有这些标志吗?

其次,我目前已经安装了Python 3.6和Python 3.8。它们都安装在/usr目录下的几个文件夹中。按照我在网上看到的说明,我正在/opt/Python3.10中进行构建。我假设make altinstall(最终构建步骤)将负责在/usr的通常文件夹中安装构建,但这不是很清楚。虽然没有任何网站提到,但我应该使用./configure --prefix=directory吗?

最后,--enable-optimizations会降低安装过程的速度多少?

这是我第一次从源代码构建Python,弄清这些问题会有所帮助。感谢任何帮助。

1个回答

7
欢迎来到Python构建配置世界!我将逐一介绍命令行选项 ./configure--with-pydebug 针对核心Python开发人员,而不是像你和我一样只使用Python的开发人员。它会创建调试符号并减慢执行速度。你不需要它。 --enable-optimizations 从长远来看对性能有好处,但会延长编译过程,可能增加3倍或更多,具体取决于你的系统。然而,它可以获得更快的执行速度,因此我建议在你的情况下使用它。 --with-ensurepip=install 是很好的选择。你需要最新版本的 pip--enable-shared 或许在你的情况下不是一个好主意,所以我建议在这里不要使用它。请阅读静态库和动态库的区别? 了解它们之间的区别。基本上,由于您可能会安装到非系统路径(例如 /opt/local,请参见下文),该路径几乎肯定不在系统的共享库搜索路径中,因此您很可能会遇到问题。静态构建将所有部件放在一个位置,因此可以从任何地方安装和运行。这是以尺寸为代价的-python二进制文件将相当大,但对于非系统管理员来说非常好。即使最终安装到/usr/local,我认为静态库仍然比共享库更好/更容易。 --enable-unicode=ucs4 是可选的,可能不与您的系统兼容。你不需要它。 ./configure 足够智能,可以确定哪些Unicode设置最好。此选项是旧版本构建说明中剩下的。 --prefix 如果该目录已存在且在您的$PATH中,请使用--prefix=/opt/local或者如果你知道如何在~/.bashrc中编辑$PATH,也可以用它。否则,请使用/usr/local$HOME/usr/local 是用于本地软件安装(即不随Ubuntu提供的软件)的指定系统范围位置,并且很可能已经在$PATH中。 $HOME 是始终不需要使用sudo 的选项,这在安全方面非常好。如果不存在,请将 /home/your_username/bin 添加到$PATH中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接