Проблемы при переходе с Django 1.5 на 2.1: RuntimeError: populate () не реентерабелен - PullRequest
0 голосов
/ 15 октября 2018

Мне было поручено перейти с 1,5 на 2,1 в Django.В настоящее время у меня есть Python 3.6.2 в моей среде.Трассировка выглядит следующим образом:

(my_env) My-MBP:mysite my_mbp$ python manage.py runserver
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10d82b598>
Traceback (most recent call last):
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception
    raise _exception[1]
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
    autoreload.check_errors(django.setup)()
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages/django/apps/registry.py", line 81, in populate
    raise RuntimeError("populate() isn't reentrant")
RuntimeError: populate() isn't reentrant

Поскольку трассировка, похоже, ссылается на пакеты сайтов, я пытаюсь определить, что именно в моем коде вызывает эту ошибку.Из прочтения других постов, похоже, связано с WSGI, но я не знаю, что именно.Вот моя текущая настройка wsgi:

 import os
    import sys
    import site

    ## Add the site-packages of the chosen virtualenv to work with
    site.addsitedir('/Users/my_mbp/Software/Environments/my_env/lib/python3.6/site-packages')

    ## Add the app's directory to the PYTHONPATH
    sys.path.append('/Users/my_mbp/Software/project/mysite')
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

    ## Activate your virtual env
    activate_env=os.path.expanduser("/Users/my_mbp/Software/Environments/my_env/bin/activate_this.py")
    #execfile(activate_env, dict(__file__=activate_env))
    with open(activate_env) as f:
        code = compile(f.read(), activate_env, 'exec')
        #exec(code, global_vars, local_vars)
        exec(code)

    # This application object is used by any WSGI server configured to use this
    # file. This includes Django's development server, if the WSGI_APPLICATION
    # setting points here.
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

Еще одна вещь, которую нужно добавить, когда я закомментирую приложение в INSTALLED_APPS, это выдает еще одно сообщение об ошибке:

RuntimeError: Model class myapp.models.Mail doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
...