简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

Rocky Linux 9作为CentOS替代品在企业环境中安装Python编程语言完全指南从基础安装到环境配置依赖管理多版本共存以及常见问题解决方案适合系统管理员和开发人员

3万

主题

318

科技点

3万

积分

大区版主

木柜子打湿

积分
31894

财Doro三倍冰淇淋无人之境【一阶】立华奏小樱(小丑装)⑨的冰沙以外的星空【二阶】

发表于 2025-10-3 18:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

随着CentOS 8在2021年底结束生命周期,许多企业开始寻找替代方案。Rocky Linux作为CentOS的直接继任者,由CentOS的创始人Gregory Kurtzer领导开发,已成为企业环境中的热门选择。Rocky Linux 9作为最新的稳定版本,提供了强大的企业级功能和长期支持。

Python作为一种高级编程语言,在企业应用、自动化脚本、数据科学、机器学习和Web开发等领域有着广泛的应用。对于系统管理员和开发人员来说,在Rocky Linux 9上正确安装和配置Python环境是必不可少的技能。

本指南将详细介绍在Rocky Linux 9上安装Python的全过程,从基础安装到高级配置,包括多版本管理、依赖管理以及常见问题的解决方案,旨在帮助系统管理员和开发人员建立稳定、高效的Python开发环境。

Rocky Linux 9基础设置

在开始安装Python之前,我们需要确保Rocky Linux 9系统已经正确设置和更新。以下是基础设置步骤:

系统更新

首先,确保系统已更新到最新的软件包:
  1. sudo dnf update -y
复制代码

安装EPEL仓库

企业Linux的额外软件包(EPEL)仓库提供了许多额外的软件包,包括一些Python相关的工具:
  1. sudo dnf install epel-release -y
复制代码

安装基本开发工具

安装开发工具组,这将包括编译Python所需的工具:
  1. sudo dnf groupinstall "Development Tools" -y
复制代码

安装其他必要的依赖

Python编译和运行可能需要一些额外的依赖库:
  1. sudo dnf install openssl-devel bzip2-devel libffi-devel xz-devel -y
复制代码

完成这些基础设置后,系统已经准备好安装Python了。

Python基础安装

Rocky Linux 9默认安装了Python 3.9,但可能不包含完整的开发环境。我们将介绍如何安装系统默认的Python版本,以及如何从源代码编译安装特定版本。

检查系统已安装的Python版本

首先,检查系统是否已安装Python以及其版本:
  1. python3 --version
复制代码

或者:
  1. python --version
复制代码

如果系统中安装了Python,这个命令会显示Python的版本号。在Rocky Linux 9中,通常会显示Python 3.9。

使用DNF安装Python

如果系统中没有安装Python,或者需要安装/更新Python,可以使用DNF包管理器:
  1. sudo dnf install python3 -y
复制代码

这将安装Python 3及其基本工具,包括pip(Python包安装程序)。

验证Python安装

安装完成后,验证Python是否正确安装:
  1. python3 --version
复制代码

以及验证pip是否已安装:
  1. pip3 --version
复制代码

设置Python命令别名

为了方便使用,可以创建一个从python到python3的别名:
  1. echo "alias python='python3'" >> ~/.bashrc
  2. source ~/.bashrc
复制代码

这样,你就可以使用python命令而不是python3来运行Python 3。

从源代码编译安装Python

有时候,你可能需要安装特定版本的Python,而不是系统仓库中提供的版本。这种情况下,可以从源代码编译安装Python。

以下是从源代码安装Python 3.10作为示例:

1. 首先,安装编译Python所需的依赖:
  1. sudo dnf groupinstall "Development Tools" -y
  2. sudo dnf install openssl-devel bzip2-devel libffi-devel xz-devel -y
复制代码

1. 下载Python源代码:
  1. cd /opt
  2. sudo wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
复制代码

1. 解压源代码包:
  1. sudo tar xzf Python-3.10.12.tgz
复制代码

1. 进入解压后的目录:
  1. cd Python-3.10.12
复制代码

1. 配置编译选项:
  1. sudo ./configure --enable-optimizations
复制代码

--enable-optimizations选项将优化Python二进制文件,但会增加编译时间。

1. 编译并安装Python:
  1. sudo make altinstall
复制代码

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

1. 验证安装:
  1. python3.10 --version
复制代码

应该显示安装的Python版本:Python 3.10.12。

多版本Python管理

在企业环境中,不同的项目可能需要不同版本的Python。因此,管理多个Python版本是一个重要的技能。以下是几种管理多版本Python的方法。

使用update-alternatives管理多版本

update-alternatives是一个在Linux系统中管理多个版本软件的工具。我们可以用它来管理多个Python版本。

1. 首先,为已安装的Python版本创建替代项:
  1. sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
复制代码

如果你从源代码安装了Python 3.10,可以添加:
  1. sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.10 2
复制代码

1. 配置Python替代项:
  1. sudo update-alternatives --config python
复制代码

这将显示一个菜单,让你选择默认的Python版本:
  1. There are 2 programs which provide 'python'.
  2.   Selection    Command
  3. -----------------------------------------------
  4. * 1           /usr/bin/python3.9
  5. + 2           /usr/local/bin/python3.10
  6. Enter to keep the current selection[+], or type selection number:
复制代码

输入对应的数字选择默认的Python版本。

使用pyenv管理多版本

pyenv是一个流行的Python版本管理工具,它允许你轻松安装和切换多个Python版本。

1. 安装pyenv依赖:
  1. sudo dnf install git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel -y
复制代码

1. 安装pyenv:
  1. curl https://pyenv.run | bash
复制代码

1. 配置环境变量:
  1. echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
  2. echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
  3. echo 'eval "$(pyenv init -)"' >> ~/.bashrc
复制代码

1. 重新加载shell配置:
  1. source ~/.bashrc
复制代码

1. 验证pyenv安装:
  1. pyenv --version
复制代码

1. 使用pyenv安装Python版本:
  1. pyenv install 3.9.16
  2. pyenv install 3.10.12
  3. pyenv install 3.11.4
复制代码

1. 查看已安装的Python版本:
  1. pyenv versions
复制代码

1. 设置全局Python版本:
  1. pyenv global 3.10.12
复制代码

1. 设置局部Python版本(针对当前目录):
  1. pyenv local 3.9.16
复制代码

1. 查看当前Python版本:
  1. python --version
复制代码

使用SCL管理多版本

Software Collections (SCL)是另一个在RHEL衍生系统(如Rocky Linux)中管理多个软件版本的工具。

1. 安装SCL工具集:
  1. sudo dnf install centos-release-scl -y
复制代码

1. 安装特定版本的Python:
  1. sudo dnf install rh-python38 -y  # 安装Python 3.8
  2. sudo dnf install rh-python39 -y  # 安装Python 3.9
复制代码

1. 启用特定版本的Python:
  1. scl enable rh-python38 bash
复制代码

这将在当前shell会话中启用Python 3.8。

1. 验证Python版本:
  1. python --version
复制代码

虚拟环境配置

Python虚拟环境允许你为不同的项目创建隔离的Python环境,每个环境都有自己的包和依赖。这是开发Python项目的最佳实践。

使用venv创建虚拟环境

Python 3.3及以上版本内置了venv模块,用于创建虚拟环境。

1. 创建项目目录:
  1. mkdir myproject
  2. cd myproject
复制代码

1. 创建虚拟环境:
  1. python -m venv venv
复制代码

这将在myproject目录下创建一个名为venv的目录,包含虚拟环境的所有文件。

1. 激活虚拟环境:
  1. source venv/bin/activate
复制代码

激活后,你的shell提示符将显示虚拟环境的名称,如(venv) [user@host myproject]$。

1. 在虚拟环境中安装包:
  1. pip install requests
复制代码

1. 查看已安装的包:
  1. pip list
复制代码

1. 停用虚拟环境:
  1. deactivate
复制代码

使用virtualenv创建虚拟环境

virtualenv是一个比venv更早的工具,提供了一些额外功能。

1. 安装virtualenv:
  1. pip install virtualenv
复制代码

1. 创建虚拟环境:
  1. virtualenv myenv
复制代码

1. 激活虚拟环境:
  1. source myenv/bin/activate
复制代码

1. 停用虚拟环境:
  1. deactivate
复制代码

使用conda管理虚拟环境

Conda是一个开源的包管理系统和环境管理系统,特别适用于数据科学和科学计算。

1. 安装Miniconda:
  1. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  2. bash Miniconda3-latest-Linux-x86_64.sh
复制代码

按照提示完成安装。

1. 重新加载shell配置:
  1. source ~/.bashrc
复制代码

1. 创建新环境:
  1. conda create --name myenv python=3.10
复制代码

1. 激活环境:
  1. conda activate myenv
复制代码

1. 在环境中安装包:
  1. conda install numpy pandas
复制代码

1. 停用环境:
  1. conda deactivate
复制代码

1. 列出所有环境:
  1. conda env list
复制代码

1. 删除环境:
  1. conda env remove --name myenv
复制代码

依赖管理

在Python项目中,有效地管理依赖是至关重要的。以下是几种常用的依赖管理方法。

使用pip和requirements.txt

pip是Python的包安装程序,requirements.txt文件用于列出项目的依赖。

1. 创建requirements.txt文件:
  1. echo "requests==2.28.1" > requirements.txt
  2. echo "numpy==1.23.4" >> requirements.txt
复制代码

1. 安装requirements.txt中的依赖:
  1. pip install -r requirements.txt
复制代码

1. 生成当前环境的requirements.txt:
  1. pip freeze > requirements.txt
复制代码

使用pipenv进行依赖管理

pipenv是一个旨在将pip和virtualenv功能结合起来的工具。

1. 安装pipenv:
  1. pip install pipenv
复制代码

1. 在项目目录中初始化pipenv:
  1. cd myproject
  2. pipenv install
复制代码

1. 安装包:
  1. pipenv install requests
复制代码

1. 安装开发依赖:
  1. pipenv install --dev pytest
复制代码

1. 激活虚拟环境:
  1. pipenv shell
复制代码

1. 生成Pipfile.lock:
  1. pipenv lock
复制代码

1. 安装Pipfile中的所有依赖:
  1. pipenv install
复制代码

使用Poetry进行依赖管理

Poetry是一个现代的Python依赖管理和打包工具。

1. 安装Poetry:
  1. curl -sSL https://install.python-poetry.org | python3 -
复制代码

1. 创建新项目:
  1. poetry new myproject
  2. cd myproject
复制代码

1. 添加依赖:
  1. poetry add requests
复制代码

1. 添加开发依赖:
  1. poetry add --group dev pytest
复制代码

1. 安装所有依赖:
  1. poetry install
复制代码

1. 激活虚拟环境:
  1. poetry shell
复制代码

1. 更新依赖:
  1. poetry update
复制代码

开发环境配置

良好的开发环境可以提高开发效率。以下是配置Python开发环境的一些步骤和工具。

安装和配置IDE

1. 安装VS Code:
  1. sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
  2. echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo
  3. sudo dnf install code -y
复制代码

1. 安装Python扩展:

启动VS Code,然后按Ctrl+P,输入以下命令安装Python扩展:
  1. ext install ms-python.python
复制代码

1. 下载PyCharm:
  1. wget https://download.jetbrains.com/python/pycharm-community-2022.2.3.tar.gz
复制代码

1. 解压并运行:
  1. tar -xzf pycharm-community-2022.2.3.tar.gz
  2. cd pycharm-community-2022.2.3/bin/
  3. ./pycharm.sh
复制代码

配置Jupyter Notebook

Jupyter Notebook是一个交互式计算环境,广泛用于数据分析和科学计算。

1. 安装Jupyter:
  1. pip install jupyter
复制代码

1. 生成配置文件:
  1. jupyter notebook --generate-config
复制代码

1. 设置密码:
  1. jupyter notebook password
复制代码

1. 启动Jupyter Notebook:
  1. jupyter notebook --ip=0.0.0.0 --port=8888
复制代码

配置远程开发

有时,你可能需要在远程服务器上进行Python开发。以下是配置远程开发环境的方法。

1. 安装OpenSSH服务器:
  1. sudo dnf install openssh-server -y
  2. sudo systemctl start sshd
  3. sudo systemctl enable sshd
复制代码

1. 从本地计算机连接到远程服务器:
  1. ssh username@remote_server_ip
复制代码

1. 安装Remote-SSH扩展:

在VS Code中,按Ctrl+P,输入以下命令:
  1. ext install ms-vscode-remote.remote-ssh
复制代码

1. 配置SSH连接:

按F1,输入”Remote-SSH: Open SSH Configuration File”,然后添加以下内容:
  1. Host remote-server
  2.     HostName remote_server_ip
  3.     User username
复制代码

1. 连接到远程服务器:

按F1,输入”Remote-SSH: Connect to Host”,然后选择”remote-server”。

常见问题解决方案

在安装和使用Python的过程中,可能会遇到各种问题。以下是一些常见问题及其解决方案。

问题1:Command ‘python’ not found

问题描述:当尝试运行python命令时,系统提示”command not found”。

解决方案:

在Rocky Linux 9中,Python 3是默认版本,但可能没有创建python命令的符号链接。你可以通过以下方式解决:

1. 创建符号链接:
  1. sudo alternatives --install /usr/bin/python python /usr/bin/python3 1
复制代码

1. 或者,在你的.bashrc文件中添加别名:
  1. echo "alias python='python3'" >> ~/.bashrc
  2. source ~/.bashrc
复制代码

问题2:SSL/TLS证书验证失败

问题描述:当使用pip安装包时,出现SSL/TLS证书验证失败的错误。

解决方案:

1. 更新证书:
  1. sudo dnf update ca-certificates -y
复制代码

1. 如果问题仍然存在,可以尝试使用--trusted-host选项:
  1. pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org package_name
复制代码

1. 或者,升级pip:
  1. pip install --upgrade pip
复制代码

问题3:编译Python时出现”ModuleNotFoundError: No module named ‘_ctypes’”

问题描述:从源代码编译Python时,出现”ModuleNotFoundError: No module named ‘_ctypes’“错误。

解决方案:

这通常是因为缺少libffi-devel包。安装它并重新编译Python:
  1. sudo dnf install libffi-devel -y
  2. cd Python-x.y.z
  3. make clean
  4. ./configure --enable-optimizations
  5. make altinstall
复制代码

问题4:pip安装包时出现权限错误

问题描述:当使用pip安装包时,出现权限错误。

解决方案:

1. 使用--user选项安装到用户目录:
  1. pip install --user package_name
复制代码

1. 或者,使用虚拟环境:
  1. python -m venv myenv
  2. source myenv/bin/activate
  3. pip install package_name
复制代码

1. 如果必须全局安装,可以使用sudo:
  1. sudo pip install package_name
复制代码

但请注意,使用sudo安装Python包通常不是最佳实践。

问题5:Python版本切换问题

问题描述:系统中安装了多个Python版本,但无法正确切换。

解决方案:

1. 使用update-alternatives管理Python版本:
  1. sudo update-alternatives --config python
复制代码

1. 或者,使用pyenv管理Python版本:
  1. pyenv global x.y.z
复制代码

1. 确保PATH环境变量设置正确:
  1. echo $PATH
复制代码

确保你想要使用的Python版本的路径在PATH中位于其他Python版本之前。

问题6:虚拟环境激活失败

问题描述:尝试激活Python虚拟环境时失败。

解决方案:

1. 确保虚拟环境存在:
  1. ls -la venv/bin/
复制代码

1. 检查虚拟环境的Python版本是否与系统兼容:
  1. venv/bin/python --version
复制代码

1. 如果虚拟环境损坏,删除并重新创建:
  1. rm -rf venv
  2. python -m venv venv
复制代码

1. 确保你使用正确的shell激活脚本:
  1. # 对于bash
  2. source venv/bin/activate
  3. # 对于fish
  4. source venv/bin/activate.fish
  5. # 对于csh/tcsh
  6. source venv/bin/activate.csh
复制代码

问题7:依赖冲突

问题描述:项目中的不同包需要同一依赖的不同版本,导致冲突。

解决方案:

1. 使用虚拟环境隔离不同项目的依赖:
  1. python -m venv project1_env
  2. source project1_env/bin/activate
  3. pip install package1
  4. python -m venv project2_env
  5. source project2_env/bin/activate
  6. pip install package2
复制代码

1. 使用pipenv或Poetry等工具,它们可以更好地处理依赖关系:
  1. # 使用pipenv
  2. pipenv install package1
  3. pipenv install package2
  4. # 使用Poetry
  5. poetry add package1
  6. poetry add package2
复制代码

1. 如果必须在一个环境中解决冲突,可以尝试:
  1. pip install package1==version1 package2==version2
复制代码

或者手动编辑requirements.txt文件,指定兼容的版本。

最佳实践

在企业环境中使用Python时,遵循一些最佳实践可以帮助你避免常见问题并提高效率。

1. 使用虚拟环境

始终为每个项目创建独立的虚拟环境,以避免依赖冲突:
  1. python -m venv myproject_env
  2. source myproject_env/bin/activate
复制代码

2. 固定依赖版本

在项目中固定依赖版本,以确保可重现性:
  1. pip freeze > requirements.txt
复制代码

或者使用pipenv或Poetry:
  1. # pipenv
  2. pipenv lock
  3. # Poetry
  4. poetry lock
复制代码

3. 使用版本控制

将你的代码和依赖文件(如requirements.txt、Pipfile或pyproject.toml)纳入版本控制:
  1. git init
  2. git add .
  3. git commit -m "Initial commit"
复制代码

4. 编写测试

为你的代码编写测试,以确保其正确性和稳定性:
  1. pip install pytest
复制代码

创建测试文件,例如test_mycode.py:
  1. def test_myfunction():
  2.     assert myfunction(2) == 4
复制代码

运行测试:
  1. pytest
复制代码

5. 使用代码格式化工具

使用代码格式化工具,如black,保持代码风格一致:
  1. pip install black
  2. black mycode.py
复制代码

6. 使用代码检查工具

使用代码检查工具,如flake8,检查代码质量:
  1. pip install flake8
  2. flake8 mycode.py
复制代码

7. 文档化你的代码

使用文档字符串和工具如Sphinx记录你的代码:
  1. def myfunction(x):
  2.     """
  3.     This function squares the input.
  4.    
  5.     Args:
  6.         x (int): The number to be squared.
  7.         
  8.     Returns:
  9.         int: The square of the input.
  10.     """
  11.     return x ** 2
复制代码

8. 使用CI/CD

设置持续集成/持续部署(CI/CD)流程,自动化测试和部署:
  1. # .github/workflows/ci.yml示例
  2. name: Python CI
  3. on: [push]
  4. jobs:
  5.   build:
  6.     runs-on: ubuntu-latest
  7.     steps:
  8.     - uses: actions/checkout@v2
  9.     - name: Set up Python
  10.       uses: actions/setup-python@v2
  11.       with:
  12.         python-version: '3.9'
  13.     - name: Install dependencies
  14.       run: |
  15.         python -m pip install --upgrade pip
  16.         pip install -r requirements.txt
  17.     - name: Run tests
  18.       run: |
  19.         pytest
复制代码

9. 监控和日志记录

实现适当的监控和日志记录,以便及时发现和解决问题:
  1. import logging
  2. logging.basicConfig(
  3.     level=logging.INFO,
  4.     format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  5. )
  6. logger = logging.getLogger(__name__)
  7. def myfunction(x):
  8.     logger.info(f"Running myfunction with input: {x}")
  9.     result = x ** 2
  10.     logger.info(f"Result: {result}")
  11.     return result
复制代码

10. 定期更新依赖

定期检查和更新依赖,以获得安全修复和新功能:
  1. # 使用pip
  2. pip list --outdated
  3. # 使用pipenv
  4. pipenv update
  5. # 使用Poetry
  6. poetry update
复制代码

结论

Rocky Linux 9作为CentOS的替代品,为企业环境提供了一个稳定、可靠的操作系统平台。通过本指南,我们详细介绍了在Rocky Linux 9上安装Python的全过程,从基础安装到高级配置,包括多版本管理、依赖管理以及常见问题的解决方案。

对于系统管理员和开发人员来说,掌握这些技能对于建立和维护高效的Python开发环境至关重要。无论是使用系统包管理器安装Python,还是从源代码编译特定版本,无论是使用venv、virtualenv还是conda创建虚拟环境,无论是使用pip、pipenv还是Poetry管理依赖,每种方法都有其适用场景和优势。

通过遵循最佳实践,如使用虚拟环境、固定依赖版本、编写测试、使用代码格式化和检查工具、文档化代码、实施CI/CD流程以及监控和日志记录,你可以确保你的Python项目在企业环境中稳定、高效地运行。

希望本指南能够帮助你在Rocky Linux 9上成功安装和配置Python环境,并为你的开发工作提供支持。随着Python和Rocky Linux的不断发展,持续学习和探索新的工具和技术将使你能够更好地应对不断变化的需求和挑战。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.