【问题标题】:Django ModuleNotFoundError all of a sudden突然出现 Django ModuleNotFoundError
【发布时间】:2022-01-23 17:26:04
【问题描述】:

突然之间,我的 django 项目不再工作了。不仅是我的实际分支,甚至是大师。这发生在晚上回到我的项目之后。我遇到的错误是当我运行任何命令时都会收到此消息:

ModuleNotFoundError: No module named 'pur_beurre.pur_beurre'

(注意:pur_beurre 是我的项目名称)

当我运行 python manage.py 时,我有所有可能的命令的列表以及这条红色的新消息:

Note that only Django core commands are listed as settings are not properly configured (error: No module named 'pur_beurre.pur_beurre').

我尝试将 pur_beurre 和 pur_beurre.pur_beurre 放入我已安装的应用程序 settings.py 中,但它不起作用。

PS C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\pur_beurre> python .\manage.py runserver
Traceback (most recent call last):
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\base.py", line 373, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 66, in execute
    super().execute(*args, **options)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\base.py", line 417, in execute
    output = self.handle(*args, **options)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 73, in handle
    if not settings.DEBUG and not settings.ALLOWED_HOSTS:
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\conf\__init__.py", line 84, in __getattr__
    self._setup(name)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\conf\__init__.py", line 71, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\conf\__init__.py", line 179, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Users\tdechanet.TWM\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'pur_beurre.pur_beurre'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\manage.py", line 22, in <module>
    main()
  File ".\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\__init__.py", line 425, in execute_from_command_line
    utility.execute()
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\__init__.py", line 419, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\core\management\base.py", line 386, in run_from_argv
    connections.close_all()
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\db\utils.py", line 208, in close_all
    for alias in self:
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\utils\connection.py", line 73, in __iter__
    return iter(self.settings)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\utils\connection.py", line 45, in settings
    self._settings = self.configure_settings(self._settings)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\db\utils.py", line 144, in configure_settings
    databases = super().configure_settings(databases)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\utils\connection.py", line 50, in configure_settings
    settings = getattr(django_settings, self.settings_name)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\conf\__init__.py", line 84, in __getattr__
    self._setup(name)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\conf\__init__.py", line 71, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Users\tdechanet.TWM\Documents\OpenClassrooms\p8\code\.venv\lib\site-packages\django\conf\__init__.py", line 179, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Users\tdechanet.TWM\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'pur_beurre.pur_beurre'

这是我安装的应用程序:

INSTALLED_APPS = [
    'main_site.apps.MainSiteConfig',
    'user_management.apps.UserManagementConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

【问题讨论】:

  • 你激活了对应的virtualenv了吗?
  • 你能分享整个回溯错误信息吗?
  • 你能分享你的INSTALLED_APPS 来自settings.py,你能告诉我settings.pymanage.py 文件在哪里吗?
  • 到目前为止,我觉得一切都很好。在您的 manage.py 文件中,DJANGO_SETTINGS_MODULE 环境变量已设置为 pur_beurre.settings,对吗?
  • 好的,但这是问题的一个重要细节。 :) venv 中DJANGO_SETTINGS_MODULE 的值是多少? echo $DJANGO_SETTINGS_MODULE 也应该在 PS 中工作。

标签: python django


【解决方案1】:

manage.py 的第一行是

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pur_beurre.settings')

仅当 DJANGO_SETTINGS_MODULE 未在系统级别定义时,才将设置的标准路径设置为默认值。

您的错误消息看起来像您在 Windows 上定义了一个环境变量 DJANGO_SETTINGS_MODULE="pur_beurre.pur_beurre"

只是检查在manage.py开头添加这一行:

print(os.environ['DJANGO_SETTINGS_MODULE'])

然后检查变量的windows设置,更正或删除,以防万一重新启动。

【讨论】:

  • 好的,这似乎是问题所在。当我打印 DJANGO_SETTINGS_MODULE 时,我有 pur_beurre.pur_beurre.settings。不,问题是我无法将其设置为 pur_beurre.settings。在 Windows 设置中使用 set 或直接进入时,即使我重置 vscode,它也不起作用。
  • 好吧,我添加了 os.environ["DJANGO_SETTINGS_MODULE"] = "pur_beurre.settings"。它正在工作,但我想这是一种不好的做法,我不明白为什么我不能设置环境变量。
  • 打印/定义只是为了确保这就是问题所在!不适合长期。现在至少很明显,某处是在 Windows 级别设置的系统变量。很难找到哪个应用程序正在这样做。我从未使用过 vscode
猜你喜欢
  • 2022-08-11
  • 1970-01-01
  • 2016-06-04
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多