用于在Python中构建强大的交互式命令行的库
项目描述
prompt_toolkit 是一个用于在Python中构建强大的交互式命令行应用的库。
画廊
ptpython是一个交互式Python Shell,基于prompt_toolkit构建。
prompt_toolkit功能
prompt_toolkit可以是GNU readline的替代品,但它可以远不止于此。
一些功能
纯Python.
输入时语法高亮。(例如,使用Pygments词法分析器。)
多行输入编辑。
高级代码补全。
支持Emacs和Vi键盘绑定。(类似于readline。)
甚至一些高级Vi功能,如命名寄存器和双字符。
反向和正向增量搜索。
很好地与Unicode双宽字符一起工作。(中文输入。)
选择文本进行复制/粘贴。(Emacs和Vi样式。)
支持括号粘贴。
鼠标支持光标定位和滚动。
自动建议。(类似于fish shell。)
多个输入缓冲区。
无全局状态。
轻量级,唯一依赖项是Pygments和wcwidth。
在Linux、OS X、FreeBSD、OpenBSD和Windows系统上运行。
等等...
请随意创建用于错误和功能请求的工单,如果您有想与他人分享的优秀补丁,请创建拉取请求。
安装
pip install prompt_toolkit
对于Conda,执行以下操作:
conda install -c https://conda.anaconda.org/conda-forge prompt_toolkit
关于Windows支持
prompt_toolkit 是跨平台的,您在它之上构建的一切都应在Unix和Windows系统上运行良好。Windows支持在最近的Windows 10构建中最佳,因为命令行窗口支持vt100转义序列。如果不受支持,我们将回退到使用Win32 API进行颜色和光标移动。
值得注意的是,实现是“尽可能实现可能的功能”。Unix和Windows终端都有其局限性。但总的来说,Unix的体验会更好一些。
入门指南
库最简单的示例如下所示
from prompt_toolkit import prompt
if __name__ == '__main__':
answer = prompt('Give me some input: ')
print('You said: %s' % answer)
对于更复杂的示例,请查看 examples 目录。所有示例都旨在仅演示一个功能。此外,不要害怕查看源代码。prompt 函数的实现可能是一个不错的起点。
理念
prompt_toolkit 的源代码应该是 可读的、简洁的 和 高效的。我们更喜欢短函数,每个函数专注于一项任务,并且输入和输出类型明确指定。我们更倾向于使用组合而不是继承,因为继承可能导致同一对象具有过多的功能。在可能的情况下,我们更喜欢不可变对象(对象初始化后不会改变)。可重用性很重要。我们绝对避免具有变化的全局状态,应可能在同一进程中具有多个独立的同一代码实例。架构应该是分层的:低层操作于原始操作和数据结构,当正确组合时,提供所有可能的灵活性;而在高层,应该有一个更简单的API,易于使用且适用于大多数用例。考虑算法和效率很重要,但避免过早优化。
使用 prompt_toolkit 的项目
特别感谢
项目详情
下载文件
下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装包的信息。