-3

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

[2016-02-14 17:23:10 +0000] [4605] [错误] 工作进程中的异常:
回溯(最近一次通话最后):
  文件“/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 升级): /usr/local/lib/python2.7/dist-packages 中的 Django==1.9.2

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

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

- 更新 -

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

我发布了一个关于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仅在最后一部分中让人想起Jakob Nielsen 关于为什么用户教育不是解决问题的答案的两篇文章安全问题,以及 Nix 打包系统,它旨在让所有东西都保留其自己需要的包系统版本,而不是让所有东西都适合当前安装的任何版本的单一 Procrustean 床。

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

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

4

1 回答 1

1

1)要移植到更新版本的 Django,我会阅读从您开始使用的版本到您将要使用的版本的每一组发行说明。一定要阅读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. 祝你好运!

于 2016-02-14T23:36:45.340 回答