为了测试 Python 应用程序的新版本,我需要在我的 OpenSuSE 15.4 机器上安装最新稳定的 Python 版本 /* 默认情况下,该机器附带 Python 3.6 */。因此,我下载了 Python 3.10.11 并构建了它。make install
确实有效,但下一个命令由于缺少模块而无效msvcrt
:
╭─jacek@epica ~/bin/tmp/Python-3.10.11/dist/bin
╰─➤ ./python3 -m pip install --upgrade pip
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Traceback (most recent call last):
File "/home/jacek/bin/tmp/Python-3.10.11/dist/lib/python3.10/subprocess.py", line 69, in <module>
import msvcrt
ModuleNotFoundError: No module named 'msvcrt'
缺失的模块真的是 Microsoft Visual C++ 运行时的接口吗?如果是,为什么在 Linux 机器上安装 Python 时需要它?Python 网站上似乎只有一种源 tarball(尽管有两种不同的存档格式)。顺便说一句,python home / dir 变量根本没有设置:
╭─jacek@epica ~/bin/tmp/Python-3.10.11/dist/bin
╰─➤ echo $PYTHONHOME 1 ↵
╭─jacek@epica ~/bin/tmp/Python-3.10.11/dist/bin
╰─➤ echo $PYTHONPATH
╭─jacek@epica ~/bin/tmp/Python-3.10.11/dist/bin
╰─➤
但是,手动设置 python 主目录(就我而言/home/jacek/bin/tmp/Python-3.10.11/dist
:)没有帮助。
答案1
好的,我在 StackOverflow 上的以下一个(相当旧的)帖子中找到了解决方案:
Python 3.7 无法在 openSUSE Leap 42.3 上安装
内容如下:
ln -s $PYTHONHOME/lib64/python3.10.11/lib-dynload/ $PYTHONHOME/lib/python3.10.11/lib-dynload
但是请不要问我为什么配置过程没有创建符号链接。