web-dev-qa-db-ja.com

Django 1.7 app config ImportError:appname.appsという名前のモジュールがありません

https://docs.djangoproject.com/en/dev)のドキュメントに従って、Django 'articles'というアプリの1つにカスタムアプリケーション構成をセットアップしようとしています。/ref/applications / ですが、ImportError: No module named articles.apps(または./manage.py checkなどの他の管理コマンド)を実行すると、./manage.py runserverが表示され続けます。

これはプロジェクトの木です

projectname
    ├── apps
    │   ├── articles
    │   │   ├── admin.py
    │   │   ├── apps.py
    │   │   ├── __init__.py
    │   │   ├── migrations
    │   │   │   ├── 0001_initial.py
    │   │   │   └── __init__.py
    │   │   ├── models.py
    │   │   ├── templates
    │   │   │   └── articles
    │   │   ├── templatetags
    │   │   │   ├── articles_tags.py
    │   │   │   └── __init__.py
    │   │   ├── tests.py
    │   │   ├── urls.py
    │   │   └── views.py
    │   ├── __init__.py

settings.pyにインストールされたアプリ:

INSTALLED_APPS = (
  'grappelli',
  'Django.contrib.admin', 
  'Django.contrib.auth', 
  'Django.contrib.contenttypes', 
  'Django.contrib.sessions', 
  'Django.contrib.messages',
  'Django.contrib.staticfiles',
  'Django.contrib.humanize', 
  'grappelli.dashboard', 
  'mptt', 
  'sekizai', 
  'pytils', 
  'sorl.thumbnail',
  'sefaro.apps.utils', 
  'sefaro.apps.seo', 
  'sefaro.apps.staticpages', 
  'sefaro.apps.statictext', 
  'sefaro.apps.usersettings', 
  'sefaro.apps.navigation', 
  'sefaro.apps.slideshow',
  'sefaro.apps.articles', 
) 

articles/__init__.pyの内容:

# articles/__init__.py
default_app_config = 'articles.apps.ArticlesConfig'

articles/apps.pyの内容:

# -*- coding: utf-8 -*-
from Django.apps import AppConfig
from Django.utils.translation import ugettext_lazy as _


class ArticlesConfig(AppConfig):

    name = 'articles'
    verbose_name = _(u'Articles')

そして、私は'projectname.apps.articles'INSTALLED_APPSを持っています

私が本当にこれらすべてのファイルを持っていて、パスを台無しにしないことを確認するためだけに

>>> from projectname.apps.articles.apps import ArticlesConfig
>>> ArticlesConfig
<class 'projectname.apps.articles.apps.ArticlesConfig'>

すべてがうまくインポートされます...

だが:

(vagrant)vagrant@vagrant-ubuntu-trusty-32:~/Django$ ./manage.py check
Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/vagrant/local/lib/python2.7/site-packages/Django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/vagrant/local/lib/python2.7/site-packages/Django/core/management/__init__.py", line 354, in execute
    Django.setup()
  File "/home/vagrant/local/lib/python2.7/site-packages/Django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/vagrant/local/lib/python2.7/site-packages/Django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/home/vagrant/local/lib/python2.7/site-packages/Django/apps/config.py", line 112, in create
    mod = import_module(mod_path)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named articles.apps
10
mennanov

特定のDjangoプロジェクト構造(すべてのアプリケーションはprojectname/apps/モジュールにあります)によると、フルパスプロジェクト名を含めて使用する必要があります。

ドキュメントのとおり https://docs.djangoproject.com/en/dev/ref/applications/#Django.apps.AppConfig.name は次のように述べています。

AppConfig.name

フルPythonアプリケーションへのパス。例: 'Django.contrib.admin'。

したがって、次のようになります。

# articles/apps.py:
from Django.apps import AppConfig
from Django.utils.translation import ugettext_lazy as _


class ArticlesConfig(AppConfig):

    name = 'projectname.apps.articles'
    verbose_name = _(u'Articles')

そして

# articles/__init__.py
default_app_config = 'projectname.apps.articles.apps.ArticlesConfig'
16
mennanov

アプリ構成のname属性は、インストールされているアプリで指定するものと同じである必要があります。

またdefault_app_configは、次のようなカスタム構成への正しいパスを提供する必要があります。

default_app_config = 'projectname.apps.articles.apps.ArticlesConfig
1
Krishna G Nair

問題はあなたのarticles/__ init __。pyファイルに集中していると思います。

つまり...ドキュメントには次のように書かれています。

もちろん、ユーザーに 'rock_n_roll.apps.RockNRollConfig'をINSTALLED_APPS設定に入れるように指示することもできます。

「default_app_config」ステートメントを削除しようとしましたが、INSTALLED_APPSにarticles.apps.ArticlesConfigのみが含まれていますか?

ドキュメントが言うので私はそれを言います:

これにより、INSTALLED_APPSに「rock_n_roll」が含まれている場合にRockNRollConfigが使用されます。

articles/__ init __。pyでdefault_apps_configを宣言する場合、INSTALLED_APPSで必要なのは次の場合のみです。

INSTALLED_APPS = ( 'grappelli', 'Django.contrib.admin', 'Django.contrib.auth', 'Django.contrib.contenttypes', 'Django.contrib.sessions', 'Django.contrib.messages', 'Django.contrib.staticfiles', 'Django.contrib.humanize', 'grappelli.dashboard', 'mptt', 'sekizai', 'pytils', 'sorl.thumbnail', 'sefaro.apps.utils', 'sefaro.apps.seo', 'sefaro.apps.staticpages', 'sefaro.apps.statictext', 'sefaro.apps.usersettings', 'sefaro.apps.navigation', 'sefaro.apps.slideshow', 'articles', )

多分私は間違っていますが、私はそれを試してみます:)もっと助けが必要な場合は教えてください。

0
Joanmacat