CentOS7 源码安装python3

一、安装依赖包

首先,确保系统中安装了编译Python所需的依赖包。可以通过以下命令安装:

yum groupinstall -y "Development Tools"   # CentOS8 用此命令
yum install -y \
  openssl-devel \
  bzip2-devel \
  libffi-devel \
  zlib-devel \
  readline-devel \
  sqlite-devel \
  wget \
  gcc
  • "Development Tools":这是要安装的软件包组的名称。在这里,“Development Tools” 包括了开发和编译软件所需的常见工具和库,例如编译器(如 gcc)、调试器、构建工具等。
  • openssl-devel:包含了OpenSSL库的开发文件和头文件。在编译Python时,如果需要使用SSL功能,就需要这些文件。
  • bzip2-devel:包含了bzip2压缩算法的开发文件和头文件。Python在编译时需要支持bzip2压缩算法,因此需要这些文件。
  • libffi-devel:包含了libffi库的开发文件和头文件。libffi是一个用于调用C语言函数的库,Python在某些情况下可能会使用到它。
  • zlib-devel:包含了zlib压缩算法的开发文件和头文件。Python在编译时需要支持zlib压缩算法,因此需要这些文件。
  • readline-devel:包含了GNU Readline库的开发文件和头文件。GNU Readline库提供了命令行编辑和历史记录功能,Python在编译时可能会使用到它。
  • sqlite-devel:包含了SQLite数据库的开发文件和头文件。Python标准库中包含了对SQLite的支持,因此编译Python时需要这些文件。
  • wget:这是一个用于下载文件的命令行工具。在安装Python之前,使用wget下载Python源代码包是一个常见的做法。

二、下载Python源码

访问Python的官方网站,下载你需要的Python版本的源码包。例如,如果要下载Python 3.9.7版本,可以使用以下命令:

cd /usr/local/src
wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz
tar -zxvf Python-3.9.7.tgz
cd Python-3.9.7

三、编译和安装Python

在解压后的目录中,运行配置脚本,编译并安装Python:

./configure --prefix=/usr/local/python --enable-optimizations
make -j$(nproc) altinstall

--enable-optimizations是在配置Python编译选项时的一个参数,用于启用优化编译。

具体来说,启用了这个选项后,编译过程将会进行一些额外的优化,以提高Python解释器的性能。这些优化可能包括:

  • 启用优化标志:使用像 -O2 或者 -O3 这样的编译优化标志,以在生成的二进制文件中使用更多的优化。
  • 启用内置的哈希算法:在Python中,字典是基本数据结构之一,哈希算法的性能对整个解释器的性能至关重要。启用了优化选项后,Python可能会使用更高效的哈希算法来提高字典的性能。
  • 其他性能相关的优化:可能会进行一些与性能相关的代码优化,比如更有效的内存管理、更快速的代码执行路径等。

虽然启用了这个选项会增加编译时间,但是生成的Python解释器将会更加高效,提供更好的性能。因此,如果你对Python解释器的性能有要求,建议在编译时启用这个选项。

注意:使用altinstall而不是install,以避免覆盖系统默认的Python版本。

四、验证安装

安装完成后,可以通过以下命令验证安装是否成功:

cd /usr/local/python/bin

./python3.9 --version
# 显示版本信息
Python 3.9.7

./pip3.9 --version
# 显示版本信息
pip 21.2.3 from /usr/local/python/lib/python3.9/site-packages/pip (python 3.9)

五、设置Python路径(可选)

如果希望将新安装的Python添加到系统的环境变量中,可以在~/.bashrc/etc/profile中添加以下行:

export PATH="/usr/local/bin:$PATH"

然后运行以下命令使更改生效:

source ~/.bashrc

这样,CentOS 7上就成功部署了Python 3,并且可以开始使用了。

举例,执行如下命令并执行:

[root@jerion ~]# echo 'print("Hello World!")' > test.py 
[root@jerion ~]# python3.9 test.py 
Hello World!

六、创建软链接(可选)

创建软链接可以确保你可以更方便地使用特定版本的Python,尤其是当你系统上安装了多个版本的Python时。通过创建软链接,你可以在命令行中直接使用特定版本的Python解释器,而无需输入完整的路径。

创建软链接时,需要将python3.9pip3.9一起创建,先备份原有的文件:

mv /usr/bin/python3 /usr/bin/python3.bak
mv /usr/bin/pip3 /usr/bin/pip3.bak
ln -s /usr/local/python/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python/bin/pip3.9 /usr/bin/pip3

七、问题思考

1.为啥不用先makemake altinstall

在编译和安装Python时,使用makemake altinstall的确是一个关键步骤。下面解释一下为什么一般不需要先运行make再运行make altinstall,而是直接运行make altinstall

  • 编译和安装的结合
    • make:这个命令会读取Makefile文件,根据其中的规则编译源代码,生成二进制文件(即将源码转换成可执行程序)。
    • make install:这个命令在make完成后,将生成的二进制文件和其他需要的文件复制到系统的适当位置,以便系统可以使用新编译的软件。
    • make altinstall:这个命令与make install类似,但它不会覆盖系统的默认Python版本(通常是Python 2.x),而是以python3.x的形式安装新的Python版本。
  • 避免冗余步骤
    • 当你运行make altinstall时,它实际上是包含了编译和安装的步骤。因此,直接运行make altinstall可以完成从编译到安装的所有工作。
    • 运行make再运行make altinstall会导致重复编译,增加不必要的时间消耗。
  • 一致性和简洁性
    • 直接运行make altinstall可以保持操作的简洁性,避免多余的步骤,从而减少可能的错误。
    • 这种方式也符合官方推荐的安装步骤。

总结: 直接运行make altinstall即可完成编译和安装的全部流程,无需先运行make再运行make altinstall。这样不仅简化了操作步骤,也避免了冗余的编译过程。

你可能感兴趣的:(centos,linux,python)