1

我们使用 django 版本 1.2 和 python 2.4 开发项目。现在我们要将项目迁移到最新版本(Django1.4 和 python2.7)。

我对移民很陌生,有人可以就此提出建议吗?

我需要注意哪些事项?我们需要重新重写所有代码吗?

4

4 回答 4

2

这就是我们正在做的事情(我们正在将 ~60Kloc 从 Django 0.97 升级到 1.4):

  • 创建代码的升级分支
  • 创建一个用于升级的 virtualenv
  • 下载 Django 的“下一个”版本(如果您更喜欢小步骤),或者您想要最终使用的 Django 版本,并将其放入您自己的版本控制系统 (VCS)。
  • 将 Django 从您的 VCS 签出到您的 virtualenv 的根目录。
  • 重复直到完成:
    • 运行您的测试套件(和覆盖范围)。
    • 解决任何问题
  • 在你的根__init__.py文件中添加一个注释,指明你的代码使用哪个 Django 版本(这会为你节省很多时间:-)
  • 将您的主干合并到您的升级分支(以获取在您进行升级时发生的所有更改)。
  • 运行您的测试套件,修复任何问题,然后签入合并。
  • 最后:将您的升级分支重新集成回主干。

现在您已经升级了代码(您仍然需要计划升级的部署,但这是另一个问题)。

ps:我们将 Django 存储在我们的 VCS 中,因此我们可以跟踪我们需要对 Django 本身进行的任何更改(如果您不想转到 1.4,则尤其需要,但仍可能需要从该版本进行一两个修复)。

于 2012-08-14T15:37:48.070 回答
0

只是先在本地做。你肯定会遇到问题,然后做出相应的改变。尽管我假设您不需要更改很多代码。对于 Django,请阅读Django 1.3 发行说明Django 1.4 发行说明,并特别注意与以前的 Django 版本(不仅仅是 1.2,因为您可能在您的应用程序中使用了 Django 1.0/1.1 的功能)相比已弃用的内容。以我的经验,这些主要是设置的变化和项目结构的一些小变化。

对于 Python 2.4 -> Python 2.7 我不能说太多。这实际上取决于您使用了多少旧功能。当您测试整个应用程序时,您会发现。可能完全没有问题。

于 2012-08-14T06:55:09.390 回答
0

如果您使用的是 virtualenv,只需使用您想要的 django/python 版本创建一个新的 virtualenv,处理这个 virtualenv 并针对它运行您的测试套件。

顺便说一句,在 Django 上下文中,您可能需要小心使用“迁移”这个词。当您对数据库中的表进行更改时,迁移通常是指使用 South 进行的模型迁移。

于 2012-08-14T07:11:08.173 回答
-1

Python 不支持向后兼容性,考虑到您在从 2.4 迁移到 2.7 时可能会遇到一些问题。

于 2012-08-14T06:21:37.747 回答