ModuleNotFoundError: No module named 'readline'

  1. 从官网 Download Python | Python.org 下载好 python-3.10.4 一路装好, 结果如此

    2 使用 virtualenv , 结果依然如此
  2. google 了各种方法,不起作用,包括 configure openssl, ln -s …/lib-dynload

image

额,其实 openSUSE 官方仓库是有 python3.10 的

sudo zypper in python310

你可以试试官方提供的 python,看有没有相同的问题

1赞

没看懂,不是找不到 readline 吗?pip install readline

1赞

正因为是找不到 readline,所以才不能 pip install。readline 是 Python 自带的库,并且会链接到系统库上。

所以楼主后边的尝试是完全不会有用的。我也完全不懂他说的「一路装好」是怎么装的。我点过去看了一下,Python.org 并没有提供 Linux 平台上的二进制,大概是自己编译安装的吧……不过 /etc/pythonstart 这个文件就猜不出来是怎么回事了。

其实直接 zypper in 就好了啊……

1赞

我尝试了你的方法,结果仍然出错。已经升级到 15.4

自带的 2.7, 3.6 没有任何问题

Defaulting to user installation because normal site-packages is not writeable
Collecting readline
Using cached readline-6.2.4.1.tar.gz (2.3 MB)
Preparing metadata (setup.py) … error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [1 lines of output]
ERROR: Can not execute setup.py since setuptools is not available in the build environment.
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the ‘/usr/local/bin/python3.10 -m pip install --upgrade pip’ command.

目前看来就是 openSUSE 自己对 3.10 支持不好,如果说是 python3.10 自己的问题,那怎么我在 windows10 和 MacOS 上面都能用呢?。用你的办法我 deinstall 3.10,装了 3.9,不出问题。

我去 search.opensuse.org 翻了一下,python 3.10 好像只有 Tumbleweed 有可用的官方包(Leap 看样子得去找 OBS 源了):

风滚草默认内置的 python 版本是 3.8(openSUSE 官方仓库其实也有 python39 和 python311,但是 Leap 有没有就不知道了):

按理说,像 python 这类重要的,被纳入官方仓库的基础工具包不应该出现问题的。python 使用者很多,如果 openSUSE 维护的 python 有问题,影响面也会很广泛。

或许你需要补充更多一些信息,来帮助浏览这个帖子的人更深入地了解你的机器究竟发生了什么事情。

1赞



我已经按照这个方法装好了.问题是你自己运行一下 python3.10
image

image

建议使用 anaconda 来安装 python 二进制。

问题根本没有解决,参考了这两个帖子,

openssl 之类的都装了。
什么 sudo ln -s /opt/lib64/python3.10/lib-dynload /opt/lib/python3.10/lib-dynload

ln -s /opt/lib64/python3.10/lib-dynload /opt/lib/python3.10/lib-dynload
现在的情况是,在 python3.10 本地目录下
sudo ./python 就没有 realine 的问题。
./python 就不行。

之前在 Leap 15.4 下面 python3.10 自行编译遇到无法解决的问题,今天在 Leap 15.5 下安装 python-3.11.4 再次遇到,不过这次解决了。
而且有一处值得注意,上次跟这次一样,就是只要用 sudo 运行就不出 readline 的问题。
旧帖:ModuleNotFoundError: No module named 'readline'
方法就是
./configure --enable-optimizations --with-lto=full --prefix=$PWD/run --libdir=$PWD/run/lib
make -j8
make install
sudo ln -s /usr/lib64/python3.11/lib-dynload /usr/lib/python3.11/lib-dynload

又在 Leap 15.5 尝试编译 3.10。下载的版本是 3.10.12.方法如上
./configure --enable-optimizations --with-lto=full --prefix=$PWD/run --libdir=$PWD/run/lib
make -j8
make install
但这次安装完成之后,没有在/usr/lib64 和/usr/lib/生成任何东西,而是在安装文件所在的目录下生成一个 run 目录,故而上述方法中的 sudo ln -s /usr/lib64/python3.11/lib-dynload /usr/lib/python3.11/lib-dynload 步骤无从做起。

这一次在这个目录下./python3.10 可以正常运行,没有如标题所示的错误
ModuleNotFoundError: No module named ‘readline’

之前的 Python3.11 安装文件所在目录下也有一个 run,里面的 python3.11 之间运行仍然报错
ModuleNotFoundError: No module named ‘readline’
前文说可以正常运行的 python3.11 所在的目录是/usr/local/bin/,而且用 ls -lah 命令查看返回信息是
-rwxr-xr-x 1 root root 25M Jul 28 16:37 /usr/local/bin/python3.11
Python3.11 安装文件所在目录下的 run 目录里的、运行会报如题错误的 python3.11
用 ls -lah 命令查看返回信息是
-rwxr-xr-x 1 $USER users 20M Jul 28 17:01 python3.11
当然,用 sudo 运行之就没有错误。所以还是依赖所造成的权限的问题。

安装 python.3.10 之后,虽然可以运行 (要在 path2python3.10/run 下),pip 无法工作,
报错

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available

于是重新检查问题所在

仔细考虑之后认为问题出在这一行
./configure --enable-optimizations --with-lto=full --prefix=$PWD/run --libdir=$PWD/run/lib
之前安装 python3.11,用的是
./configure --enable-optimizations
于是重新这样做
./configure --enable-optimizations
make -j8
只不过 make install 必须用 sudo
完成以后,sudo ln -s
但是有趣的是 /usr/lib64/ 只有系统自带的 3.6 和我新装的 python3.11
python3.10 的 lib 和 lib64 所在的目录是/usr/local/
执行 sudo ln -s /usr/local/lib64/python3.10/lib-dynload /usr/local/lib/python3.10/lib-dynload
之后 python3.10,可以启动。
python3.10 的 pip 仍然不能用
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/tensorflow/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/tensorflow/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/tensorflow/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/tensorflow/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/tensorflow/

最终按照这个帖子的方法,安装了 openssl-devel
原帖地址:

解决。现在我的 Leap 15.5 有三个版本 python:3.6.15、3.11.4、3.10.12.