命令行Python应用及框架
我打算用Python写一个比较复杂的命令行应用程序。我希望能用一些除了纯Python以外的东西,可能是一个框架之类的,这样可以让应用里的服务和代码管理变得更简单。我脑海中想的就是MVC模式,因为这个应用会有几个不同的命令(控制器),它们会调用不同的数据源(比如JSON请求、REST请求等,也就是MVC中的“模型”),然后以不同的格式显示结果(视图)。
我觉得MVC模式很适合这个,但我并不是在做一个网页应用。我想要的是一种不一定需要网络服务器的东西,但又能有框架的好处,强制一些编码标准。
有没有人有什么建议或者小窍门?我知道我可以用Python从头开始构建,但我只是想知道有没有其他可以利用的东西。
谢谢,
Dustin
2 个回答
公平地说,MVC(模型-视图-控制器)并不只限于网页应用。近几年,随着网络技术的流行,MVC和网页应用之间的关系可能变得更加紧密。换句话说,网页应用可以使用MVC,但使用MVC并不一定意味着你就有一个网页应用。
如果你想使用一个框架,可以尝试找一个最接近你想要的控制器的框架。我不知道有没有以命令行作为界面的MVC框架,但有一些平台无关的图形用户界面框架,比如GTK+或QT,这两个框架都有Python的绑定。
从个人的角度来看,我之前使用过Django来实现这个目的。虽然技术的纯粹性可能会引起讨论,但在选择框架时,没有人强迫你使用框架的所有组件。Django有一个很不错的ORM(对象关系映射),我非常喜欢,以至于我把它用作一个通过SSH操作的界面的后台。虽然这可能有点过于复杂,但对我来说,这样做的好处是我可以重复利用我对系统的了解,而不是去学习一个新的、只用一次的框架。
总之,这一切归根结底还是要看你的自律。即使是最好的框架,也无法阻止你违反编码标准和偷工减料……
另外,如果你使用的是Linux,可以考虑使用Python的curses模块来做你的命令行前端。
虽然有点晚了,但我还是想分享给可能看到这个的朋友:
Cement是一个为Python设计的高级命令行应用框架。上手非常简单,而且它在很多方面都很灵活,比如日志记录和配置文件解析等几乎每个部分都可以自定义。Cement2(代号波特兰)现在还在测试阶段,但离稳定版本已经很近了:
http://cement.readthedocs.org/en/portland/
另外,如果你在创建一个REST命令行客户端,也可以看看dRest:
http://drest.readthedocs.org/en/latest/
这个也很容易上手,并且在从请求处理到发送和接收数据的序列化方面都非常灵活。
如果你对这两个框架有任何问题,我很乐意回答。