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

标签 django maven project-management continuous-integration build-management

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




来自构建和项目管理工具比比皆是的 Java 开发,我想知道什么可用于 Django。我真的很想使用 Maven 之类的东西来构建东西,但是还有另一种首选的方法吗?

我真的在寻找以下内容:

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

  • Maven 或其他工具目前可以做到这一点吗?我正在这里着手一个相当大的项目,我想要一个像 Maven 这样的快速构建/项目管理系统来帮助项目随着时间的推移而发展。

    最佳答案

    我想到了两个工具,它们都是通用的 Python 工具——它们不需要专门与 Django 一起使用:

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

  • 我确定还有其他可用的软件包。我能给你的最好建议是对它们进行简要评估,然后选择最适合你的场景/团队工作风格的一个。请注意,这些主要是部署工具 - 在 python 中构建并没有真正意义,因为您不编译 python 代码。

    就 CI 相关的内容而言,您需要了解 django 中的三个命令:
  • ./manage.py test从所有 tests.py 运行您的测试文件。这些基本上是对 unittest 的 django 特定增强。 ,一个python包。
  • ./manage.py collectstatic将静态文件收集到您选择的目录中;对于将所有位组合在一起以存在于静态媒体服务器上非常有用。看看the static files howto这是如何工作的。
  • 您需要 South对于这个,./manage.py schemamigration app --auto && ./manage.py migrate app - 这将模型更改应用于底层 sql 架构。基本上,如果你只是改变一个模型而不使用南,Django 会很不高兴,因为新字段不会映射到旧的 sql 模式并且它不能持久化你的模型。 South 支持的架构迁移使您能够升级现有的填充数据库。值得在自动化之前手工完成。
  • 我还应该指出你可以写custom management commands执行 ./manage.py whatever you like .这具有相当大的潜力 - 例如,我使用管理命令作为在 cron 作业中执行的命令。您还可以为应用程序的管理员构建交互式命令,当然还有部署和测试。

  • 如何处理这些实际上取决于您可用的设置以及您选择的工具。

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

    关于django - Django 项目的项目管理/构建工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784061/

    相关文章:

    hibernate - Tomcat 7、Hibernate 3.6、PostgreSQL 9.2 | Maven java.lang.NoClassDefFoundError

    project-management - 开发者技能矩阵 : Useful or Harmful?

    java - 更正应包含单个兼容版本的应用程序的类路径

    python - Django - 使文件 I/O 线程安全

    python - 跳过 django FormWizard 上的步骤

    django 转储出一个变量

    android - JRebel for Android 与 Maven 和 IntelliJ

    project-management - 如何处理超出您的技能/知识范围的任务?

    project-management - 冲刺时长-2周vs 30天

    CentOS 上的 Django