2017-04-25 3 views
0

Ich versuche, mein Projekt zu restrukturieren, um die Empfehlung in den neuesten zwei Scoops von Django Buch (für Django 1.11) zu entsprechen.Django-Projekt Neustrukturierung: Kann App nicht importieren

Nach Abschluss der Umstrukturierung kann meine App nicht importiert werden.

secureDash_project 
    ├── README.rst 
    ├── config 
    │   ├── __init__.py 
    │   ├── __pycache__ 
    │   ├── db.sqlite3 
    │   ├── settings 
    │   │   ├── __init__.py 
    │   │   ├── __pycache__ 
    │   │   └── settings.py 
    │   ├── urls.py 
    │   └── wsgi.py 
    ├── db.sqlite3 
    ├── manage.py 
    ├── requirements.txt 
    └── secureDash 
     ├── __init__.py 
     ├── __pycache__ 
     ├── dash 
     │   ├── __init__.py 
     │   ├── __pycache__ 
     │   ├── admin.py 
     │   ├── apps.py 
     │   ├── forms.py 
     │   ├── migrations 
     │   │   └── __init__.py 
     │   ├── models.py 
     │   ├── tests.py 
     │   ├── urls.py 
     │   └── views.py 
     └── templates 
      └── dash 

settings.py Auszug:

... 
import os 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
BASE_DIR = os.path.dirname(os.path.dirname(
    os.path.dirname(os.path.abspath(__file__)))) 
ENV_PATH = os.path.abspath(os.path.dirname(__file__)) 

# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = True 

# Application definition 

INSTALLED_APPS = [ 
    'secureDash.dash.apps.DashConfig', 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    # 'django_static_jquery', 
    # 'bootstrap3', 
] ... 

Beim Laufen

python3 manage.py runserver --settings=config.settings.settings 

ich:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x1076b0d08> 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 113, in inner_run 
    autoreload.raise_last_exception() 
    File "/usr/local/lib/python3.5/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception 
    six.reraise(*_exception) 
    File "/usr/local/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/usr/local/lib/python3.5/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/usr/local/lib/python3.5/site-packages/django/apps/config.py", line 142, in create 
    app_module = import_module(app_name) 
    File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked 
ImportError: No module named 'dash' 

secureDash.dash.apps.DashConfig:

from django.apps import AppConfig 


class DashConfig(AppConfig): 
    name = 'dash' 
+0

Haben Sie versucht, 'secureDash.dash.apps.DashConfig' durch' secureDash.dash' zu ersetzen? –

+0

Nein. Das hat aber funktioniert. Kannst du mir helfen zu verstehen, warum das funktioniert? – brewcrazy

+1

'django' sucht nach dem' apps'-Wurzelverzeichnis. Also in diesem Fall ist es 'secureDash/dash /' Ordner. Danach sucht es nach 'anses.py' und' urls.py' um es zu konfigurieren. –

Antwort

2

Ersetzen secureDash.dash.apps.DashConfig mit secureDash.dash in INSTALLED_APPS sollte es beheben.

Verwandte Themen