Django导入错误:没有名为apps的模块

Jos*_*osh 13 python directory django module importerror

我刚刚用git检查了一个项目.项目结构是

project
  apps
    myapp
      settings
        __init__.py
      __init__.py
    manage.py
Run Code Online (Sandbox Code Playgroud)

还有其他目录和文件,但我认为这些是重要的目录和文件.

当我运行服务器时,我得到了

    Traceback (most recent call last):
  File "C:/Dev/project/apps/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 345, in execute
    settings.INSTALLED_APPS
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 46, in __getattr__
    self._setup(name)
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 98, in __init__
    % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'apps.myapp.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named apps.myapp.settings
Run Code Online (Sandbox Code Playgroud)

在运行时manage.py check我得到了ImportError: No module named apps.所以我猜这个问题与我的设置模块无关,而是与我的apps目录有关.我不确定为什么它找不到我的模块应用程序,因为项目在我的上面sys.path并且apps显然存在.由于我作为Python开发人员不是很有经验,所以我自己找不到解决方案.

aum*_*umo 20

您需要__init__.py在文件apps夹中添加一个空(总共4个下划线)文件,以便Python将其识别为包.

查看文档以获取更多信息.

  • 而且只是OP的一个注释:使用**两组**两个**下划线.发布的问题只有单打,而这个答案有正确的数字. (2认同)
  • 不,没有。需要 `__init__.py` 文件才能使 Python 将目录视为包含包。http://stackoverflow.com/questions/448271/what-is-init-py-for (2认同)

小智 10

请注意,在Django 1.9中有一个名为django.apps的模块

通常建议避免使用内置模块进行名称冲突


Rub*_*ben 9

如果您已使用该django-admin startapp myapp命令,则会创建此文件:myapp/apps.py.

它可能与您的apps/模块文件夹冲突.隐藏apps.pyc文件可能位于您的myapp/文件夹中.

尝试删除这些:

  • project/apps/myapp/apps.py
  • project/apps/myapp/apps.pyc


loo*_*ard 9

如果settings.py在运行此之前将应用程序安装在主项目文件夹中,也会发生这种情况:

python manage.py startapp [app-name]
Run Code Online (Sandbox Code Playgroud)

将其注释掉,创建应用程序(现在应该可以工作),然后将该行放回settings.py文件中并继续。

  • 你是对的,如果应用程序名称已添加到 settings.py 中,“python manage.py startapp”将抛出“模块未找到”错误 (3认同)

Alv*_*pez 5

您的配置路径后可能缺少逗号:

  INSTALLED_APPS = [
    'palc.apps.PalcConfig', # This comma
    'django.contrib.admin',
     ...]
Run Code Online (Sandbox Code Playgroud)