如何在bash虚拟环境中启用Python命令行历史编辑功能?
解决虚拟环境中Python Shell命令行编辑/历史功能缺失的问题
方法一:补全系统readline依赖并重建虚拟环境
虚拟环境里的Python无法使用命令行编辑功能,大概率是系统缺少readline的开发依赖,导致虚拟环境的Python没编译对应的模块。操作步骤:
- 先退出当前虚拟环境:
deactivate - 安装系统级readline开发包:
- Debian/Ubuntu系:
sudo apt-get install libreadline-dev - CentOS/RHEL系:
sudo yum install readline-devel
- Debian/Ubuntu系:
- 删除旧虚拟环境并重新创建:
rm -rf env python3 -m venv env - 重新激活虚拟环境
source env/bin/activate,再启动python,上下箭头编辑和历史记录功能就正常了。
方法二:用rlwrap临时包装Python命令
如果不想重建虚拟环境,可以用rlwrap工具给Python Shell套一层命令行编辑能力:
- 安装rlwrap工具:
- Debian/Ubuntu系:
sudo apt-get install rlwrap - CentOS/RHEL系:
sudo yum install rlwrap
- Debian/Ubuntu系:
- 激活虚拟环境后,用
rlwrap python启动解释器,就能直接使用上下箭头调历史、编辑命令了。
方法三:安装IPython替代默认Shell
IPython自带完善的命令行编辑、历史管理,甚至还有语法高亮、自动补全,体验比默认Shell好太多:
- 激活虚拟环境后,安装IPython:
pip install ipython - 运行
ipython启动解释器,所有编辑功能直接可用。
内容的提问来源于stack exchange,提问作者Neil Bartlett
相关产品推荐
相关产品推荐

