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
特定の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'
アプリ構成のname属性は、インストールされているアプリで指定するものと同じである必要があります。
またdefault_app_config
は、次のようなカスタム構成への正しいパスを提供する必要があります。
default_app_config = 'projectname.apps.articles.apps.ArticlesConfig
問題はあなたの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', )
多分私は間違っていますが、私はそれを試してみます:)もっと助けが必要な場合は教えてください。