命令行python app和框架

时间:2011-10-12 17:15:43

标签: python frameworks

我将在python中编写一个相当复杂的命令行应用程序。我想利用除纯Python之外的其他东西,可能是一个框架或其他东西,使应用程序中的服务和代码管理更容易。我想在我看来,我在考虑MVC,因为应用程序将有几个不同的命令(控制器),它们调用不同的数据源(JSON请求,REST请求等,例如MVC中的“模型”),然后以不同的格式显示结果(视图)。

我认为MVC适用于此,但我并没有真正做一个网络应用程序。我想要的东西不一定需要Web服务器,但具有强制一些编码标准的框架的优点。

有没有人有任何提示或建议?我知道我可以用Python从头开始构建一些东西,但我只是好奇我是否还有其他东西可以利用。

谢谢, 达斯汀

2 个答案:

答案 0 :(得分:20)

这有点晚了,但却发布了其他任何偶然发现的人:

Cement是Python的高级CLI应用程序框架。入门非常简单,从登录到配置文件解析几乎可以自定义几乎所有部分。 Cement2(代号为portland)目前处于测试阶段,但非常接近稳定版本:

http://cement.readthedocs.org/en/portland/

此外,如果您要创建REST命令行客户端,还要结帐dRest:

http://drest.readthedocs.org/en/latest/

它也非常容易上手,并且从请求处理程序到发送端和接收端的序列化方式也非常灵活。

我很乐意回答任何问题。

答案 1 :(得分:0)

为了公平对待模式,MVC不受Web应用程序的约束。我认为,由于过去几年网络感知的趋势,MVC和网络应用程序之间的这种关系可能会增长。换句话说,Web应用程序可以使用MVC,但使用MVC并不一定意味着您拥有Web应用程序。

如果您想使用框架,可以尝试使用最接近目标控制器的框架。我不知道有一个命令行作为接口的MVC框架,但是使用它的一些独立于平台的GUI框架例如GTK+QT:两者都有python绑定。

从个人的角度来看,我之前使用Django就是为了这个目的。虽然技术纯度可以作为讨论的一个点,但在选择框架时,没有人强迫您使用所有框架的组件。 Django有一个很好的ORM,我非常喜欢它,所以我把它作为SSH操作界面的后端。这可能有点过头了,但对我来说有一个好处,我可以重用我对系统的知识,而不是学习一个新的,曾经使用过的框架。

总之,这一切都归结为纪律。即使是最好的框架也无法阻止您违反编码标准和偷工减料......

PS如果您使用的是Linux,可以考虑将python的curses模块用于命令行前端。