【问题标题】:How can I get an old Django project back and running like it was before?如何让旧的 Django 项目恢复原状并像以前一样运行?
【发布时间】:2016-02-14 23:30:31
【问题描述】:

我有一个没有跟上的旧 Django 项目,现在我想进行必要的更改以使用当前版本的 Django 和相关软件。我不确定如何处理当前的错误;在我看来,它在 django.core 保护伞下没有任何东西,但我的 Django 1.9.2 安装是最新的:

[2016-02-14 17:23:10 +0000] [4605] [ERROR] 工作进程中的异常:
回溯(最近一次通话最后):
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py”,第 515 行,在 spawn_worker
    worker.init_process()
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py”,第 122 行,在 init_process
    self.load_wsgi()
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py”,第 130 行,在 load_wsgi
    self.wsgi = self.app.wsgi()
  wsgi 中的文件“/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py”,第 67 行
    self.callable = self.load()
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/app/djangoapp.py”,第 141 行,加载中
    mod = util.import_module("gunicorn.app.django_wsgi")
  import_module 中的文件“/usr/lib/python2.7/importlib/__init__.py”,第 37 行
    __import__(名称)
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/app/django_wsgi.py”,第 21 行,在
    从 django.core.management.validation 导入 get_validation_errors
ImportError:没有名为验证的模块
回溯(最近一次通话最后):
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py”,第 515 行,在 spawn_worker
    worker.init_process()
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py”,第 122 行,在 init_process
    self.load_wsgi()
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py”,第 130 行,在 load_wsgi
    self.wsgi = self.app.wsgi()
  wsgi 中的文件“/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py”,第 67 行
    self.callable = self.load()
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/app/djangoapp.py”,第 141 行,加载中
    mod = util.import_module("gunicorn.app.django_wsgi")
  import_module 中的文件“/usr/lib/python2.7/importlib/__init__.py”,第 37 行
    __import__(名称)
  文件“/usr/local/lib/python2.7/dist-packages/gunicorn/app/django_wsgi.py”,第 21 行,在
    从 django.core.management.validation 导入 get_validation_errors
ImportError:没有名为验证的模块
[2016-02-14 17:23:10 +0000] [4605] [INFO] 工人退出(pid:4605)
[2016-02-14 17:23:11 +0000] [4597] [INFO] 关机:Master
[2016-02-14 17:23:11 +0000] [4597] [INFO] 原因:Worker 无法启动。
root@localhost:~/unixytalk# pip install Django==1.9.2
已满足要求(使用 --upgrade 升级):Django==1.9.2 in /usr/local/lib/python2.7/dist-packages

如何将我的项目移植到较新的 Django?例如,我如何提供(或告知提供)django.core.management.validation?

如果我可以提出另一个古老的问题,什么可以代替“python manage.py syncdb”来将数据库初始化为应用程序可以处理的项目?

--更新--

我从这张纸条上走开了,在想……

我发布了一个 screenful 的输出,其中 Gunicorn 无法正常工作,这是通过从 django.core.management.validation 导入的,显然是由 Gunicorn 的流程放置在那里的,而不是任何感觉到我主动与该模块直接交互。 (正如我所说,我试图让旧系统与新代码一起工作。至少对于这个项目,这在任何意义上都不包括主动使用 django.core.management.validation。)

不要说得太细,但回复的人与我的一屏粘贴输出相关,为 TL;DR

TL;DR 设定步伐的不是我;是帮助我的人。

根据“全选并复制”上呈现字符的复制和粘贴指标,TL;DR 为 2412 个字符。

大量的发行说明,有 53714 个字符,符合 TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL ;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR TL;DR 仅在最后一期中, strong> 让人想起 Jakob Nielsen's article on why user education is not the answer to security issues 和 Nix 打包系统,该系统旨在让所有东西都保留其自己需要的包系统版本,而不是让所有东西都适合当前安装的任何版本的单一 Procrustean 床。

这有点偏离我原来的问题,但事实并非如此。我最初的问题是,“我怎样才能稍微洒一点像素灰尘,让一个相当简单的旧 Django 项目重新焕发生机?”现在事情看起来更像“我不能再运行我留下的作为工作项目的事实是冰山一角。鉴于我是一个体面的 Django 开发人员,但不是一个超级专注的 Django 专家,而且我与很多技术,bitrot 看起来是很多痛苦的根源。”

好的;抱怨得够多了,虽然我怀疑这里有一个程序员的帖子。

【问题讨论】:

    标签: python django django-1.9 django-mysql


    【解决方案1】:

    1) 为了移植到较新版本的 Django,我会阅读从您开始使用的版本到您将要使用的版本的每一组发行说明。一定要阅读release notes for Django 1.9,特别注意阅读底部附近已弃用、向后不兼容和删除的功能。

    2) 要检查是否提供了django.core.management.validation,您可以在导入时使用try/except

    try:
        from django.core.management.validation import get_validation_errors
        validation_errors_imported = True
    except ImportError:
        get_validation_errors = None
        validation_errors_imported = False
    

    3) 最后,您将不再运行python manage.py syncdb。从Django 1.7 开始,它是python manage.py migrate。祝你好运!

    【讨论】:

    • 恕我直言,您关于“要移植到更新版本的 Django,我会阅读从您开始使用的版本到您将要使用的版本的每一组发行说明”的建议是过分的:如果这是真的,Django 的标语应该更准确地说,“具有小说级空闲阅读时间的完美主义者的 Web 框架”!如果您有截止日期,那么通过简洁的主题工作为 SO 社区的互惠互利添加一些内容会更具吸引力。
    • P.S.我不是直接尝试导入 django.core.management.validation;我发布了异常的 Gunicorn-heavy 回溯,并且收到了错误。在我被告知 Django 1.9.2 已正确安装后,有什么方法可以正确安装 django.core.management.validation,或者确定在 Django 中我可以行使您的 2) 选项吗?
    • (感谢有关迁移的说明。)
    • 我目前正在对一个项目做类似的事情,我只是在错误出现时修复它们。
    • 每个 1.x 版本的 Django 都包含许多向后不兼容和删除的功能。根据我的经验,将任何项目从一个版本升级到下一个版本的唯一方法是逐点阅读发行说明并在出现问题时修复它们。我已经将我工作中的大项目从 1.6 升级到 1.7 到 1.8,现在又升级到 1.9。唯一可行的方法就是按照我上面提到的去做。
    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多