"No installed app with label 'admin'" 运行 Django 迁移。该应用程序已正确安装

"No installed app with label 'admin'" running Django migration. The app is installed correctly

我正在尝试在 Django 1.7 上的数据迁移期间使用 admin.LogEntry 对象

'django.contrib.admin' 应用已在 INSTALLED_APPS 上列出。

在 shell 上有效:

>>> from django.apps import apps
>>> apps.get_model('admin', 'LogEntry')
django.contrib.admin.models.LogEntry

但是在迁移过程中,失败了:

def do_it(apps, schema_editor):
    LogEntry = apps.get_model('admin', 'LogEntry')

像这样失败:

django-admin migrate
(...)
LookupError: No installed app with label 'admin'.

使用调试器,我发现 'admin' 没有安装:

ipdb> apps.get_apps()
[]
ipdb> apps.all_models.keys()
['website', 'google', 'allauth', 'twitter', 'busca', 'conteudo', 'django_mobile', 'django_filters', 'videocenter', 'tinymce', 'oferta', 'programacaotv', 'contenttypes', 'suit', 'haystack', 'destaque', 'filer', 'galeria', 'auth', 'facebook', 'paintstore', 'critica', 'disqus', 'fichas', 'omeletop', 'autocomplete_light', 'modelsv1', 'temas', 'django_extensions', 'adv_cache_tag', 'taggit', 'social', 'personalidade']

为什么??

我不知道造成这种情况的确切原因。将不得不深入研究源代码。但现在一个解决方法是添加 ('admin', 'name_of_last_migration_in_admin_app') 到依赖项,迁移应该没问题。

Django doc说的很清楚:

When writing a RunPython function that uses models from apps other than the one in which the migration is located, the migration’s dependencies attribute should include the latest migration of each app that is involved, otherwise you may get an error similar to: LookupError: No installed app with label 'myappname' when you try to retrieve the model in the RunPython function using apps.get_model().

代码示例:

# Imports are omitted for the sake of brevity

def move_m1(apps, schema_editor):
    LogEntry = apps.get('admin.logentry')
    # Other business logic here ...


class Migration(migrations.Migration):

    dependencies = [
        ('app1', '0001_initial'),

        # Below is the manually added dependency, so as to retrieve models
        # of 'django.contrib.admin' app with apps.get_model() in move_m1().
        #
        # Currently this is for Django 1.11. You need to look into
        # 'django/contrib/admin/migrations' directory to find out which is
        # the latest migration for other version of Django.
        ('admin', '0002_logentry_remove_auto_add'),
    ]

    operations = [
        migrations.RunPython(move_m1),
    ]

我遇到了同样的错误(但与所提到的问题无关)。我正在使用 mysql 数据库,但没有 mysql 客户端。

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # other details like name, user, host
    }
}

我安装了mysql客户端(在ubuntu & Python3):

sudo apt-get install libmysqlclient-dev
sudo apt-get install python3-dev
pip install mysqlclient

也尝试进一步查看您的堆栈跟踪。由于错误配置的记录器,我收到了这个错误,但我不得不进一步查看跟踪以找到这个问题!

在我的例子中,我将我的环境变量 DJANGO_LOG_LEVL 错误命名为 DEGUB 而不是 DEBUG(注意拼写错误),这导致了错误。

我遇到了类似的错误,我是一个完全的新手程序员。对我有用的一种解决方案是安装 sqlparse。尝试

pip install sqlparse

我也有同样的错误 "no installed app label 'admin' "。我能够通过 运行 pip install sqlparse 命令

解决它

对我来说它显示

raise LookupError(message)

LookupError: No installed app with label 'admin'.

我通过 pip 手动安装每个需求来解决我正在使用 ubuntu 16.04

对于我的情况,发生 LookupError 是因为我更改了模型并添加了 'related_name' 但没有 运行 makemigrations 和 migrate。

我在我的模型中使用 'required=False' 时遇到错误,如下所示: slug = models.SlugField(required=False)

我将其更改为:slug = models.SlugField(blank=True,null=True) 并且错误消失了

只需在已安装的应用部分检查您的 setting.py 并确保您已将应用添加到那里:

# Application definition

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


        '--- you need to add your app here ---',
    ]

在将数据库从 sqlite 更改为 postgresql 并通过安装后,我也遇到了这个错误 psycog2(用于将 django 连接到 postgre 数据库)我的错误消失了。

pip 安装 psycog2

我也遇到了这个问题,我所做的只是升级 pip,它似乎自行修复尝试安装其他依赖项,但结果我已经拥有了所有这些依赖项,所以如果你处于相同的位置,请尝试升级你的 pip!

就我而言,应用名称未添加到“已安装应用”字典下的 settings.py 文件中

你需要做makemigrations n migrate之后就不会发现这种类型的错误了

同样的事情也发生在我身上,但在我的例子中,INSTALLED_APPS 变量已被覆盖 settings.py 文件中此文件下面的几行。

create a virtual environment and install all the required dependency or packages in virtual environment

That solved my issue