在服务器和企业级应用领域,CentOS 以其稳定性和可靠性而备受青睐,在 CentOS 系统上进行 Python 开发是一项非常普遍且重要的技能,本文将系统地介绍如何在 CentOS 环境下搭建一个高效、隔离且现代化的 Python 开发环境,涵盖从 Python 解释器安装到项目依赖管理的全过程。
系统自带Python与开发环境隔离
必须明确一个核心原则:切勿轻易修改或卸载 CentOS 系统自带的 Python,CentOS 7 默认搭载的是 Python 2.7,而 CentOS 8 则引入了 Python 3.6,这些旧版本的 Python 深度集成到系统管理工具中,yum
(CentOS 7)或 dnf
(CentOS 8)都依赖于它们,一旦破坏了系统 Python,很可能导致系统包管理器失灵,甚至整个系统崩溃。
我们的目标是安装一个独立的、供开发使用的现代 Python 版本(如 Python 3.9、3.10 或更高版本),并让它与系统环境完全隔离,实现这一目标的最佳方式是:从源码编译安装 或 使用虚拟环境。
安装现代Python版本
虽然通过 yum
或 dnf
可以安装 Python 3,但版本通常不是最新的,对于需要使用最新语言特性的开发者来说,从源码编译是更灵活、更推荐的选择。
从源码编译安装 (推荐)
此方法给予开发者完全的控制权,可以安装任意想要的版本。
安装编译依赖:
在编译 Python 之前,需要安装必要的开发工具和库,打开终端,执行以下命令:sudo yum groupinstall -y "Development Tools" sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel
下载并解压 Python 源码:
前往 Python 官网找到所需版本的下载链接(Python 3.9.10),然后使用wget
下载并解压。wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz tar -xvf Python-3.9.10.tgz cd Python-3.9.10
配置编译选项:
运行configure
脚本进行预编译配置,推荐添加--enable-optimizations
参数,它会启用一些优化(如 PGO),能显著提升 Python 的运行性能。./configure --enable-optimizations --prefix=/usr/local/python3.9
--prefix
参数指定了安装路径,避免与系统 Python 冲突。编译与安装:
使用make
命令进行编译,然后使用make altinstall
进行安装。注意:这里必须使用altinstall
而非install
,它会安装一个带版本号的python
命令(如python3.9
),而不会覆盖系统的默认python
命令。make -j$(nproc) # -j$(nproc) 会使用所有CPU核心加速编译 sudo make altinstall
创建软链接(可选):
为了方便使用,可以为新安装的 Python 和 pip 创建全局软链接。sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python3.9 sudo ln -s /usr/local/python3.9/bin/pip3.9 /usr/bin/pip3.9
之后,你就可以通过
python3.9
和pip3.9
命令来使用新版本了。
项目依赖管理:虚拟环境的实践
即使安装了独立的 Python 版本,最佳实践仍然是为每个项目创建独立的虚拟环境,虚拟环境可以确保不同项目之间的依赖包互不干扰,是实现项目隔离的关键,Python 3.3+ 内置了 venv
模块,是创建虚拟环境的官方推荐工具。
创建虚拟环境:
在你的项目目录下,执行以下命令:# 确保使用的是新安装的 Python 版本 python3.9 -m venv venv
这会在当前目录下创建一个名为
venv
的文件夹,其中包含了 Python 解释器副本和 pip 等工具。激活虚拟环境:
source venv/bin/activate
激活后,你的命令行提示符前会出现
(venv)
标记,所有python
和pip
命令都指向了虚拟环境内的版本。安装依赖与开发:
在虚拟环境中,你可以自由地使用pip
安装项目所需的包,而不会影响全局环境。pip install requests flask pandas
我们会将项目依赖列表导出到
requirements.txt
文件中,方便他人协作或部署。pip freeze > requirements.txt pip install -r requirements.txt
退出虚拟环境:
开发完成后,使用以下命令即可退出:deactivate
选择合适的开发工具
在 CentOS 服务器上,你可能主要通过命令行进行开发,但一个好的编辑器或IDE能极大提升效率。
工具 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
VS Code | 功能强大,插件生态丰富,支持远程SSH开发,界面友好 | 相对重量级,需要图形界面或通过SSH远程连接 | 远程服务器开发、全栈开发、需要强大调试和代码提示功能的场景 |
PyCharm | Python IDE的标杆,智能提示、重构、调试功能极为强大 | 专业版收费,资源占用较高,远程配置稍复杂 | 大型Python项目、Django/Flask Web开发、需要顶级IDE支持的专业开发者 |
Vim/Neovim | 轻量级,启动快,高度可定制,纯键盘操作效率极高 | 学习曲线陡峭,初始配置复杂 | 习惯命令行的资深开发者、服务器快速编辑、追求极致效率的场景 |
一个典型的开发流程
- 通过 SSH 连接到 CentOS 服务器。
cd
到项目目录,执行python3.9 -m venv venv
创建虚拟环境。source venv/bin/activate
激活环境。pip install -r requirements.txt
安装项目依赖。- 使用 VS Code 的 Remote-SSH 插件或 Vim 打开项目文件,开始编码。
- 在虚拟环境中运行
python your_script.py
或flask run
来执行和测试应用。 - 使用
git
进行版本控制,提交代码。 - 完成工作后,
deactivate
退出环境。
相关问答FAQs
为什么不能直接用 yum install python3
?或者直接删除系统自带的 Python 2.7?
解答: 直接使用 yum install python3
在某些 CentOS 版本(尤其是 CentOS 8)中是可行的,但它提供的版本可能不是最新的,无法满足开发需求,而绝对不能删除系统自带的 Python,因为 yum
/dnf
等核心系统工具是用 Python 编写的,它们硬编码依赖系统默认的 Python 路径和版本,一旦删除,这些工具将立即失效,你将无法再安装或更新任何系统软件包,这可能导致系统无法维护,我们通过源码编译并使用 make altinstall
来安装一个独立的、带版本号的 Python(如 python3.9
),从而与系统环境和谐共存。
make install
和 make altinstall
在编译安装 Python 时有什么核心区别?
解答: 这两者在编译安装 Python 时有本质区别,关系到系统的稳定性。
make install
:这个命令会执行标准的安装过程,它会创建一个不带版本号的python
可执行文件(/usr/local/bin/python
),如果你在已经存在系统 Python 的机器上使用它,这个新的python
会覆盖掉系统默认的python
命令,这会直接导致依赖系统 Python 版本的系统工具(如yum
)崩溃。make altinstall
:这是“替代安装”命令,它只会创建一个带有完整版本号的可执行文件(/usr/local/bin/python3.9
),而不会创建或覆盖任何不带版本号的python
链接,这样,新安装的 Python 就作为一个独立的、可被显式调用的解释器存在,完全不会干扰系统原有的 Python 环境,在已有系统 Python 的机器上,永远应该使用make altinstall
。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复