在 OpenSUSE 上安装额外的 Python(不破坏现有的 Python)

在 OpenSUSE 上安装额外的 Python(不破坏现有的 Python)

情况

我们公司有内部服务器

  • OpenSUSE Leap 15.5
  • Python 3.6(.15)
  • Python 2.7(.18)

查看详细信息以获取更多信息

任务

由于 Python 3.6 已经停产,我们希望安装较新的 Python(3.10 或 3.11)。
为了不破坏任何东西我想

  1. 并行安装新的 python
  2. 另外安装它(不替换或破坏任何现有的安装或别名)
  3. 可以从任何地方使用它(脚本)

由于该服务器对我们的开发过程至关重要,因此我希望尽可能降低风险。

问题

  1. 就系统稳定性、其他 python 安装和“python”二进制/符号链接而言,安装另一个 python 的风险有多大?
  2. 我应该如何以风险最低的方式安装 python?

细节

***:~> cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.5"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.5"
PRETTY_NAME="openSUSE Leap 15.5"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.5"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"


***:~> zypper info python
...
Repository     : Update repository with updates from SUSE Linux Enterprise 15
Name           : python
Version        : 2.7.18-150000.51.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Installed Size : 1.4 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : python-2.7.18-150000.51.1.src
Upstream URL   : https://www.python.org/
Summary        : Python Interpreter
...

***:~> zypper info python3
...
Repository     : Update repository with updates from SUSE Linux Enterprise 15
Name           : python3
Version        : 3.6.15-150300.10.48.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Installed Size : 141.3 KiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : python3-3.6.15-150300.10.48.1.src
Upstream URL   : https://www.python.org/
Summary        : Python 3 Interpreter
....

答案1

此解决方案仅适用于 openSUSE。尽管您也可以将它们用于 SUSE Linux Enterprise Server,但目前不支持。需要您自担风险使用它!

你可以尝试pyenv,允许特定用户使用不同的 Python 版本。我已经使用它好几个月了,我对它非常满意。

我不确定你们的政策是否允许这样做。但是,此解决方案对您的系统的影响或中断最小。您不必破坏您的系统。

请记住,这仅适用于具体的用户。其他用户不会看到此更改,也不会受到影响。这可能是也可能不是一个优势。

准备系统

在使用特定 Python 版本之前,您需要安装并配置pyenv.

请按如下方式进行:

  1. 整合开发:语言:python:向后移植回购到您的系统中。

  2. 安装 pyenv 包:

     $ sudo zypper install --details pyenv
    
  3. 安装构建 Python 所需的以下开发包:

     $ sudo zypper install -y gcc automake bzip2 libbz2-devel \
       xz xz-devel openssl-devel ncurses-devel readline-devel \
       zlib-devel tk-devel libffi-devel sqlite3-devel \
       gdbm-devel make findutils patch
    
  4. 将以下行添加到 ~/.bashrc 文件中:

     echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
     echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
     echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    

    如果您使用其他 shell,请参阅https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv

  5. 使用 重新启动 shell,exec $SHELL或关闭控制台并打开一个新控制台。

安装不同的Python版本

您的系统现在已准备就绪。该pyenv命令下载请求的版本,编译它并将其存储在~/.pyenv/versions/.完成此操作后,您可以在 shell 中使用新的 Python 版本。

要安装特定的 Python 版本,请按以下步骤操作:

  1. 安装Python版本,例如3.11:

     $ pyenv install 3.11
    
  2. 为您的特定用户设置此版本:

     $ pyenv global 3.11
    

    如果您想将其限制为当前目录,请使用:

     $ pyenv local 3.11
    
  3. 检查是否pip3解析为本地安装:

     $ pip3.11 --version
     pip 23.1.2 from /home/tux/.pyenv/versions/3.11.4/lib/python3.11/site-packages/pip (python 3.11)
    

    您应该看到一个指向用户的目录,而不是以/usr/.

准备好系统后,pyenv允许您将任何 Python 库安装到本地安装中。例如:

$ pip3.11 install <LIBRARY>

结束语

请记住,此方法绕过了 RPM 系统和 zypper。您不会从他们那里得到任何更新。但是,如果您需要更新的 Python 版本,则需要更新包pyenv才能访问最新版本。

此外,您需要小心来自 RPM 的 Python 版本。您可能会感到困惑,因为有相似的名称(pip3.11vs. pip3-3.11)。

相关内容