Django项目的项目管理/构建工具?

Naf*_*Kay 9 django continuous-integration project-management build-management maven

来自Java开发,其中构建和项目管理工具比比皆是,我想知道Django可用的内容.我真的很喜欢使用像Maven这样的东西来构建东西,但还有另一种首选方法吗?

我真的在寻找以下内容:

  • 命令行构建:mvn install非常简单和酷.
  • 命令行测试运行.我想将这个应用程序集成到像Hudson这样的东西中,以便持续集成,因为我就是那样的硬核.
  • 将媒体部署到本地测试服务器(JS,CSS,图像等)

目前Maven或其他工具可以实现吗?我正在这里开展一个非常大的项目,我希望像Maven这样的kick-rad构建/项目管理系统能够帮助项目随着时间的推移而增长.

小智 7

我想到了两个工具,它们都是通用的python工具 - 它们不需要特别使用Django:

  • 面料.我们用这个; 它允许我们编写远程命令,好像我们是SSH,上传代码等.这些并不是你不能做的,因为它本质上是一个用python编写的bash脚本,它很容易上手.但它也是一个用python编写的bash脚本,这意味着你可以导入你的django应用程序的一部分,运行你的测试或者在运行你的部署过程中做python可以做的任何事情.
  • 建设.我没有用过这个,但是我们的django前端开发人员告诉我这绝对是使用的工具.在猜测中,它既可以是相同的想法,也可以是稍微更抽象,更具蟒蛇风格的等价物.

我相信还有其他套餐可供选择.我能给你的最好建议就是简单地评估它们并选择最适合你的场景/团队工作方式的那个.请注意,这些主要是部署工具 - 在python中构建并不真正有意义,因为您不编译python代码.

在CI相关的东西方面,你需要知道django有三个命令:

  • ./manage.py test 从所有tests.py文件运行您的测试.这些基本上unittest是对python包的特定于django的增强.
  • ./manage.py collectstatic将静态文件收集到您选择的目录中; 对于将所有位拉到一起以存在于静态介质服务器上非常有用.看一下静态文件howto的工作原理.
  • 这个需要South,./manage.py schemamigration app --auto && ./manage.py migrate app- 这会将模型更改应用于底层的sql架构.基本上,如果你只是改变模型并且不使用south,Django会非常沮丧,因为新字段不会映射到旧的sql架构,并且它将无法持久保存你的模型.南支持的模式迁移使您可以升级现有的已填充数据库.值得在自动化之前手工完成.
  • 我还应该指出,您可以编写自定义管理命令来执行./manage.py whatever you like.这具有相当大的潜力 - 例如,我使用管理命令作为在cron作业中执行的命令.您还可以为应用程序的管理员构建交互式命令,当然还有部署和测试.

如何处理这些取决于您可用的设置和您选择的工具.

在编译时:你用python建立的最接近的是freeze,aka py2exe或cxfreeze,它们会生成二进制文件.请注意,尽管所有这些都是在exe中存储python字节码并将其传递给解释器,而解释器无论如何都是共享对象.此外,你不能cxfreeze一个django应用程序,因为django本身使用在运行时发生的动态导入,因此无法通过cxfreeze进行评估,cxfreeze本质上是一个编译时工具.所以将建筑折扣作为一项需要做的任务.您可能会看到.pyc文件出现在您的目录中 - 如果自上次pyc以来已对其进行了更改,python会将您的python脚本转换为python字节码.如果未进行任何更改,则会pyc从上次加载文件.Python字节码是执行的,所以这不是一个性能加速,只是加载时间.