Q:

Django "App with label XYZ could not be found"

I've gone through all of the various questions on this, but none have fixed my problem.   I'm working on a django project with the most up-to-date versions of django, virtualenv, on a Windows 7 home computer with Python 2.7.   The project is meant to be up on Heroku, but it doesn't work locally either. 
Basically, when trying to run manage.py sqlall appname, it always returns the following error tree:
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\commands\test.py", line 49, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\commands\test.py", line 72, in handle
    failures = test_runner.run_tests(test_labels)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\test\simple.py", line 380, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\test\simple.py", line 263, in build_suite
    app = get_app(label)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\db\models\loading.py", line 152, in get_app
    raise ImproperlyConfigured("App with label %s could not be found" % app_labe
l)
django.core.exceptions. ImproperlyConfigured: App with label tryagain could not b
e found

It won't even recognize a brand new, untouched app.   For example, if I run manage.py startapp tryagain and then add 'tryagain' to INSTALLED_APPS, I still get the same error when trying something like manage.py test tryagain.   The only way my settings.py file differs from the normal one is that for Heroku, I've added the following two lines:
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}

Any help would be greatly appreciated.   I'm driving myself crazy here. 
EDIT:
First, I tried starting a brand new Django project with a brand new app, and it still didn't work, even though everything was completely untouched. 
Since I can't figure out what settings are relevant, I've provided the entire settings.py module below for my troublesome project:
# Django settings for <problem> project. 

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@example.com'),
)

MANAGERS = ADMINS

##DATABASES = {
##    'default': {
##        'ENGINE': 'django.db.backends.', #  Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
##        'NAME': '',                      # Or path to database file if using sqlite3. 
##        'USER': '',                      # Not used with sqlite3. 
##        'PASSWORD': '',                  # Not used with sqlite3. 
##        'HOST': '',                      # Set to empty string for localhost.  Not used with sqlite3. 
##        'PORT': '',                      # Set to empty string for default.  Not used with sqlite3. 
##    }
##}

# Local time zone for this installation.  Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems. 
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system. 
# If running in a Windows environment this must be set to the same as your
# system time zone. 
TIME_ZONE = 'America/Chicago'

# Language code for this installation.  All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery. 
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT.  Make sure to use a
# trailing slash. 
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# URL prefix for admin static files -- CSS, JavaScript and images. 
# Make sure to use a trailing slash. 
# Examples: "http://foo.com/static/admin/", "/static/admin/". 
ADMIN_MEDIA_PREFIX = '/static/admin/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
)

# List of finder classes that know how to find static files in
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders. FileSystemFinder',
    'django.contrib.staticfiles.finders. AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders. DefaultStorageFinder',
)

# Make this unique, and don't share it with anybody. 
SECRET_KEY = ''

# List of callables that know how to import templates from various sources. 
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem. Loader',
    'django.template.loaders.app_directories. Loader',
#     'django.template.loaders.eggs. Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common. CommonMiddleware',
    'django.contrib.sessions.middleware. SessionMiddleware',
    'django.middleware.csrf. CsrfViewMiddleware',
    'django.contrib.auth.middleware. AuthenticationMiddleware',
    'django.contrib.messages.middleware. MessageMiddleware',
)

ROOT_URLCONF = 'craigslist.urls'

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #'kombu.transport.django',
    #'djcelery',
    '<problemappname>',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

BROKER_BACKEND = 'django'

# A sample logging configuration.  The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error. 
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration. 
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log. AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}

# note that this becomes the following:
# DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 
#                           'NAME': '',
#                           'HOST': 'localhost',
#                           'USER': None,
#                           'PASSWORD': None,
#                           'PORT':  None } }

Additional EDIT:
Directory structure can be seen below, comments in parentheses. 
 - craigslist (project)
     - craigslist
         - __init__.py
         - settings.py
         - urls.py
         - wsgi.py
     - venv (virtualenv)
         - Include (directory)
         - Lib (directory)
         - Scripts (directory)
     - webpage (app)
         - __init__.py
         - models.py
         - tests.py
         - views.py
     - __init__.py
     - listings.py (custom module, not touched yet)
     - manage.py
     - requirements.txt
     - settings.py
     - urls.py

third edit:
Thought it might also be helpful that when I run manage.py syncdb, I get the following error instead:
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\base.py", line 371, in handle
    return self.handle_noargs(**options)
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\core\management\commands\syncdb.py", line 57, in handle_noargs
    cursor = connection.cursor()
  File "C:\Users\JJ\Documents\Coding Fun\craigslist\venv\lib\site-packages\djang
o\db\backends\dummy\base.py", line 15, in complain
    raise ImproperlyConfigured("settings. DATABASES is improperly configured. " 
django.core.exceptions. ImproperlyConfigured: settings. DATABASES is improperly co
nfigured.  Please supply the ENGINE value.  Check settings documentation for more
details. 

Yet another edit:
As requested, here is my models.py. 
# models.py

from django.db import models

# Create your models here. 

class listing(models. Model):
    body = models. CharField(max_length=10000)
    title = models. CharField(max_length=400)
    url = models. URLField(primary_key = True)
    scraping_time = models. DateTimeField()
    phone = models. CharField(max_length=20)
    posting_time = models. DateTimeField()
    email = models. EmailField()
    # imglist as separate model

    def __str__(self):
        return self.title

class imagelist(models. Model):
    listing = models. ForeignKey(listing)
    img_url = models. URLField()

    def __str__(self):
        return self.img_url

A:

After much headache, I just figured it out. 
For some reason, there are two settings.pys--one in the overall project directory craigslist, and one in the subdirectory craigslist\craigslist, and I was editing the top-level settings.py, and I should have been editing the lower one.   I have no idea why this is, but after copying over all the code from the top-level to the sub-level one, suddenly manage.py sqlall webpage worked.