【问题标题】:No module named myapp没有名为 myapp 的模块
【发布时间】:2021-09-30 14:40:42
【问题描述】:

我有这个项目目录结构:

.
.pylintrc
|--myproj   .
            |--myapp
            |--myproj (settings.py is here)
            __init__.py
            manage.py
            .

在 settings.py 中,INSTALLED_APPS 我有第一个条目'myapp'

从根文件夹(包含 .pylintrc),我调用

$ DJANGO_SETTINGS_MODULE=myproj.myproj.settings pylint myproj --load-plugins pylint_django

但是,我收到错误 no module named 'myapp'。如果我将 INSTALLED_APPS 条目更改为'myproj.myapp',那么它能够继续,但现在我无法使用manage.py runserver 正常启动项目。

pastebin myproj.settings

我做错了什么,我该怎么做才能继续?

【问题讨论】:

  • 你能分享你的 settings.py 文件吗?
  • @Daniel 通过链接查看更新答案
  • 在下面查看我的答案:

标签: python django static-analysis pylint


【解决方案1】:

可能您的 settings.py 配置不正确,您需要执行以下操作:

settings.py


INSTALLED_APPS = [
    ...
    'myapp.apps.MyappConfig',
    ...
]

如果您打开 myapp 目录中的 apps.py 文件,您将看到应该包含在 INSTALLED_APPS 中的配置类

【讨论】:

  • 如果我这样做,我会收到错误ImportError: Module 'myproj.myapp' does not contain a 'MyappConfig' class.。我刚刚为这个问题用 django-admin startproject 重新创建了一个新项目,所以除了应用程序myapp 和在INSTALLED_APPS 中添加条目外,所有内容都是默认的。我还做的最后一个更改是在第一个myproj 目录中添加一个文件init.py,如文件夹结构所示,会不会有问题?
  • 模式是<app-name>.app.<config-class> - 你不应该在INSTALLED_APPS的字符串中包含项目名称
  • 好的,我很抱歉。我已将其更改为myapp.apps.MyappConfig,但现在我又回到了与原始问题no module named 'myapp' 相同的错误。它是否与运行 pylint 的工作目录有关?
  • 字符串区分大小写 - 您确定“myapp”的拼写正确且大小写正确吗?它需要与您的“myapp”目录的名称完全匹配。
  • 是的,因为我可以使用 manage.py runserver 很好地运行它。
【解决方案2】:

同样的问题发生在我身上,我找到了解决办法。

就我而言,我错过了我的 urls.py 文件。

re_path(r"^chaining/", include("smart_selects.urls")),

re_path(r"^chaining/", include("packages.smart_selects.urls")),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多