简体   繁体   中英

ImportError: No module named TestModel when use manage.py to runserver

I user Django create a project named testdj , and also in it I created a APP named TestModel , see my tree:

aircraftdeMacBook-Pro:TestPython ldl$ tree testdj/
testdj/
├── db.sqlite3
├── manage.py
├── templates
│   ├── base.html
│   ├── ext-1.html
│   ├── hello.html
│   └── index.html
└── testdj
    ├── TestModel
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── apps.py
    │   ├── migrations
    │   │   └── __init__.py
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    ├── __init__.py
    ├── __init__.pyc
    ├── helloworld.py
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── view.py
    ├── view.pyc
    ├── wsgi.py
    └── wsgi.pyc

But when I cd to the testdj/ directory, I want to run the wsgi server:

$ python manage.py runserver

I get the below error:

Unhandled exception in thread started by <function wrapper at 0x10b80ede8>
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/management/commands/runserver.py", line 117, in inner_run
    autoreload.raise_last_exception()
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 250, in raise_last_exception
    six.reraise(*_exception)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/apps/config.py", line 94, in create
    module = import_module(entry)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named TestModel

It says ImportError: No module named TestModel in it.


In the testdj/testdj/settins.py , I have added the TestModel as APP:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'TestModel',
]

Bro bro bro, why arent you following any tutorial? you messed up

the app folder and the main testdj folder will be there where you have manage.py ,

at this point you have inserted the testmodel inside the testdj folder where settings.py is ,

so take it out and place at the place of manage.py, the whole folder,

then run

python manage.py runserver

This ( https://stackoverflow.com/a/44673465/6563567 ) will work but it is not wrong to move your app to settings.py level. You just have to tell django where to find the apps. Since your apps are not in manage.py level, your installed apps should look like this:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'testdj.TestModel',
]

Further you can add 'testdj', in installed apps if you want to add views.py file in setting level. Remember that your app is a python package and each file inside the app is a python module and that's how django uses them.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM