情况
我们公司有内部服务器
- OpenSUSE Leap 15.5
- Python 3.6(.15)
- Python 2.7(.18)
查看详细信息以获取更多信息
任务
由于 Python 3.6 已经停产,我们希望安装较新的 Python(3.10 或 3.11)。
为了不破坏任何东西我想
- 并行安装新的 python
- 另外安装它(不替换或破坏任何现有的安装或别名)
- 可以从任何地方使用它(脚本)
由于该服务器对我们的开发过程至关重要,因此我希望尽可能降低风险。
问题
- 就系统稳定性、其他 python 安装和“python”二进制/符号链接而言,安装另一个 python 的风险有多大?
- 我应该如何以风险最低的方式安装 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
.
请按如下方式进行:
整合开发:语言:python:向后移植回购到您的系统中。
安装 pyenv 包:
$ sudo zypper install --details pyenv
安装构建 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
将以下行添加到 ~/.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
使用 重新启动 shell,
exec $SHELL
或关闭控制台并打开一个新控制台。
安装不同的Python版本
您的系统现在已准备就绪。该pyenv
命令下载请求的版本,编译它并将其存储在~/.pyenv/versions/
.完成此操作后,您可以在 shell 中使用新的 Python 版本。
要安装特定的 Python 版本,请按以下步骤操作:
安装Python版本,例如3.11:
$ pyenv install 3.11
为您的特定用户设置此版本:
$ pyenv global 3.11
如果您想将其限制为当前目录,请使用:
$ pyenv local 3.11
检查是否
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.11
vs. pip3-3.11
)。