Python中Linux源安装的Python3.4.3版本,编译安装Python3.6.3后提示No module named 'readline'错误如何解决

Python3.6.3 版本 下载,解压
./configure
make
make install
结果连输入 python3 或者 python3.6 这样的命令进去都报错,提示
File “/etc/pythonstart”, line7, in <module>
import readline
ModuleNotFoundError: No Module named ‘readline’
用 pip 提示没有 urllib3,用 virtualenv 提示没有_posixsubprocess
有谁遇到过同样的问题解决了吗?自带的 Python3.4 通过包管理软件卸载了也没有用
Python中Linux源安装的Python3.4.3版本,编译安装Python3.6.3后提示No module named 'readline’错误如何解决


17 回复

你要改环境变量吧。


这个问题是因为Python 3.6.3编译时没有正确链接到readline库。readline库提供了交互式命令行编辑功能,通常通过libreadline-dev(或readline-devel)开发包提供。

核心原因:编译Python时,系统缺少readline的开发头文件,导致Python解释器没有内置的readline支持。

解决方案

  1. 安装readline开发包

    • Ubuntu/Debian:sudo apt-get install libreadline-dev
    • CentOS/RHEL:sudo yum install readline-devel
    • Fedora:sudo dnf install readline-devel
  2. 重新编译安装Python 3.6.3

    cd Python-3.6.3
    make clean
    ./configure --enable-optimizations
    make -j$(nproc)
    sudo make altinstall
    

关键点make clean很重要,它会清除之前的编译缓存,确保重新检测readline库。

替代方案:如果不想重新编译,可以安装纯Python实现的替代品:

python3.6 -m pip install gnureadline

然后在代码中导入gnureadline而不是readline

一句话总结:安装readline开发包后重新编译Python即可解决。

Python 编译安装是需要一些依赖库的,如果缺少了这些依赖库,模块就不会加载。

我记得 Python 在编译完成之后会提醒你哪些东西少了,你可以安装完成之后再重新编译 Python

虽然不反对你这样做……
我想说,何苦编译安装呢。

另外如果你用的 root, configure 时候没指定 prefix 然后直接 make install 怕是把系统的给覆盖了?

似乎用 pyenv 没有遇到这种问题,不记得是自己安装了依赖还是 pyenv 自动安装的依赖。

直接用第三方源安装,编译安装麻烦不能卸载还事情多

借楼问一下,在没有 root 权限的机子上安装 Python 3 只能编译吗?

你不可能没有 sudo 权限吧?

百度 annaconda

就是没有

源里的 Python 只有 3.4.3 的啊,相装一下 3.6.3 的,官网对 Linux 好像只有源码包

是的。。
现在已经把能找到的 3.6.3 的安装后的文件删掉了,原来的 3.4.3 用包管理工具删除再安装一下,目前勉强能用了。

sudo apt install libreadline-dev



请问下要想安装官网最新版也只能编译吧?用的其他源一般都是旧的版本,有什么新源推荐吗?谢谢

楼主你犯了一个原则性错误,自己编一个包不要替换掉系统原有的包,特别是 python 这么重要的包。python 编译是可以 altinstall 到非系统目录的。

#14

一套标准连,我 vagrant 机器自用的

bash<br>sudo add-apt-repository ppa:deadsnakes/ppa<br>apt-get update<br>apt-get install -y python3.6 python3.6-dev<br><br>rm /usr/bin/python3<br>ln -s /usr/bin/python3.6 /usr/bin/python3<br><br>curl <a target="_blank" href="https://bootstrap.pypa.io/get-pip.py" rel="nofollow noopener">https://bootstrap.pypa.io/get-pip.py</a> | python3<br><br>pip3 --version<br>pip3 install pip --upgrade<br>

这个 3.6 源不是最有名的那个,最有名的那个会搞坏 apt,这个不会

回到顶部