I was working on a Django project on my PC, Then I created an application named “register” and I get a weird error when I try to run manage.py runserver: im using Python 3.8.3. this error occurs when i added forms for registration.
File "manage.py", line 21, in <module> main() File "manage.py", line 17, in main execute_from_command_line(sys.argv) File "C:Python38libsite-packagesdjangocoremanagement__init__.py", line 401, in execute_from_command_line utility.execute() File "C:Python38libsite-packagesdjangocoremanagement__init__.py", line 377, in execute django.setup() File "C:Python38libsite-packagesdjango__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "C:Python38libsite-packagesdjangoappsregistry.py", line 91, in populate app_config = AppConfig.create(entry) File "C:Python38libsite-packagesdjangoappsconfig.py", line 116, in create mod = import_module(mod_path) File "C:Python38libimportlib__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked ModuleNotFoundError: No module named 'main'
my settings.py:
DEBUG = True ALLOWED_HOSTS = ['*'] SETTINGS_PATH = os.path.dirname(os.path.dirname(__file__)) # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'simple2', "crispy_forms", 'main.apps.MainConfig', 'register.apps.RegisterConfig', 'register' ] ...
Advertisement
Answer
I’m guessing that you didn’t configure your WSGI app as Django’s App engine looks for an app
variable in a file named main.py
. Here are two ways you can look at this:
Include your WSGI Application
You still can create a file named main.py
that includes an app variable
. You don’t need to write anything, just import it (let’s say your project name is projekt
:
from projekt.wsgi import main as app
Adding a custom entrypoint
As in Google’s Appengine:
entrypoint
: Optional. The command that is executed when your app starts. For your app to receive HTTP requests,entrypoint
should contain a command which starts a web server that listens on the port specified by the PORT environment variable. If you do not specify anentrypoint
, App Engine will configure and start the Gunicorn webserver.
A comparison between the default and your need:
# default entrypoint: gunicorn -b :$PORT main:app # What you need entrypoint: gunicorn -b :$PORT demosite.wsgi:main