You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python Django程序遇ModuleNotFoundError:LoginServiceModule不存在

问题描述

我有一个名为LoginServiceBase.py的Python程序,放置在LoginService目录中,该目录下的__init__.py内容如下:

# Import views and other necessary modules
from .views import LoginView, SignupView
from .LoginServiceBase import settings

# Define package-level variables
APP_NAME = 'LoginServiceBase'

程序基于Django开发,我在LoginServiceBase.py中定义了Django配置类。执行python -m LoginServiceBase命令时,出现错误:ModuleNotFoundError: No module named 'LoginServiceModule.settings'; 'LoginServiceModule' is not a package。

我从未定义过LoginServiceModule这个名称,想请教:

  • 该名称的来源是什么?
  • 这是否为Python包的强制命名规范?

附报错栈信息:

traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
     return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
     exec(code, run_globals)
File "/home/bbrelin/src/repos/mednotes/src/Microservices/LoginService/LoginServiceBase.py", line 4, in <module>
     application = get_wsgi_application()
File "/home/bbrelin/src/repos/mednotes/.venv/lib/python3.10/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
     django.setup(set_prefix=False)
File "/home/bbrelin/src/repos/mednotes/.venv/lib/python3.10/site-packages/django/__init__.py", line 19, in setup
     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/home/bbrelin/src/repos/mednotes/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 92, in __getattr__
     self._setup(name)
File "/home/bbrelin/src/repos/mednotes/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 79, in _setup
     self._wrapped = Settings(settings_module)

问题分析与解决

1. LoginServiceModule的来源

这个名称和Python包强制规范无关,问题出在Django的配置上:

  • Django启动时依赖DJANGO_SETTINGS_MODULE环境变量,用来定位配置模块的路径。如果这个变量被错误设置为LoginServiceModule.settings,就会触发该报错。
  • 检查两个地方:一是系统/虚拟环境的环境变量配置;二是LoginServiceBase.py中是否有硬编码设置,比如os.environ.setdefault("DJANGO_SETTINGS_MODULE", "LoginServiceModule.settings")——这里的名称应该改成你的实际配置路径LoginService.LoginServiceBase(因为你的配置类在LoginService包下的LoginServiceBase.py中)。

2. Python包的命名规范

Python没有强制要求包必须使用特定名称,但PEP8规范建议:

  • 包名用小写字母,下划线分隔(比如login_service),避免大写和特殊字符。
  • 但这只是风格建议,不是硬性要求,你的LoginService包名完全合法,当前问题和命名规范无关,纯粹是配置错误导致的。

修复步骤

  1. 修正DJANGO_SETTINGS_MODULE的值:
    • 如果是环境变量,将其设置为LoginService.LoginServiceBase;
    • 如果是代码中设置,找到对应行修改引号内的路径。
  2. 调整运行命令:
    你需要在LoginService的上级目录执行命令,使用完整的包模块路径:
    python -m LoginService.LoginServiceBase
    
    直接运行python -m LoginServiceBase会导致Python无法识别它是LoginService包下的模块。

内容的提问来源于stack exchange,提问作者redmage123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:46:02