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’错误如何解决
你要改环境变量吧。
这个问题是因为Python 3.6.3编译时没有正确链接到readline库。readline库提供了交互式命令行编辑功能,通常通过libreadline-dev(或readline-devel)开发包提供。
核心原因:编译Python时,系统缺少readline的开发头文件,导致Python解释器没有内置的readline支持。
解决方案:
-
安装readline开发包:
- Ubuntu/Debian:
sudo apt-get install libreadline-dev - CentOS/RHEL:
sudo yum install readline-devel - Fedora:
sudo dnf install readline-devel
- Ubuntu/Debian:
-
重新编译安装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,这个不会

