首页 文章

我怎样才能恢复旧的Django项目并像之前一样运行?

提问于
浏览
-4

我有一个旧的Django项目,我没有跟上,现在我想对当前版本的Django和相关软件进行必要的更改 . 我不知道该怎么做当前的错误;在我看来它在django.core伞下没有东西,但我的Django 1.9.2安装是最新的:

[2016-02-14 17:23:10 +0000] [4605] [ERROR] Exception in worker process:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 122, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/djangoapp.py", line 141, in load
    mod = util.import_module("gunicorn.app.django_wsgi")
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/django_wsgi.py", line 21, in 
    from django.core.management.validation import get_validation_errors
ImportError: No module named validation
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 122, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/djangoapp.py", line 141, in load
    mod = util.import_module("gunicorn.app.django_wsgi")
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/django_wsgi.py", line 21, in 
    from django.core.management.validation import get_validation_errors
ImportError: No module named validation
[2016-02-14 17:23:10 +0000] [4605] [INFO] Worker exiting (pid: 4605)
[2016-02-14 17:23:11 +0000] [4597] [INFO] Shutting down: Master
[2016-02-14 17:23:11 +0000] [4597] [INFO] Reason: Worker failed to boot.
root@localhost:~/unixytalk# pip install Django==1.9.2
Requirement already satisfied (use --upgrade to upgrade): Django==1.9.2 in /usr/local/lib/python2.7/dist-packages

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

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

--UPDATE--

有一些我正在离开这个笔记的想法......

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

不要把它放得太精细了,但是那个响应的人与我的屏幕粘贴输出有关 TL;DR .

这不是我为 TL;DR 设定步伐的我;这是帮助我的人 .

根据"select all and copy," 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 in its last installment alone, ,让人联想到Jakob Nielsen's article on why user education is not the answer to security issues和Nix包装系统,这意味着让一切都保留其自己所需的包装系统版本,而不是让一切都适合单一的Procrustean床是当前安装的版本 .

这有点偏离我原来的问题,除了它不是 . 我原来的问题是,“我怎么能轻微地喷洒像素灰尘并恢复一个相当简单的旧Django项目呢?”现在事情看起来更像是“事实上,我不能再运行我作为工作项目所留下的东西是冰山一角 . 鉴于我是一个体面的Django开发人员,但不是一个超级专注的Django专家,我与之合作很多技术,比特罗看起来像很多痛苦的来源 . “

好;足够的抱怨,虽然我怀疑在这里有一个程序员的帖子 .

1 回答

  • 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 . 祝好运!

相关问题