Django执行manage.py check报错找不到settings模块,疑wsgi.py未执行
为什么wsgi.py没被调用?
python manage.py check这类Django管理命令不会加载wsgi.py或asgi.py文件。这两个文件是给生产环境的WSGI/ASGI服务器(如Gunicorn、Uvicorn)使用的,用于启动Django应用服务。本地通过manage.py执行命令时,会直接从manage.py内部读取配置并初始化环境,完全不会涉及wsgi.py,所以你加的打印语句不会输出,修改wsgi.py也对这个问题没有帮助。
解决settings模块找不到的方案
1. 修正manage.py中的配置(关键)
打开项目根目录下的manage.py,找到以下代码段:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '这里的内容')
确保括号内的参数是'mysite.settings'——这是Python模块路径(mysite是子文件夹,settings是该文件夹下的settings.py文件),而不是你之前设置的绝对文件路径。DJANGO_SETTINGS_MODULE需要的是模块路径,不是文件系统路径,这是你出错的核心原因。
2. 确认PYTHONPATH设置正确
你在activate.ps1中设置PYTHONPATH时,应该指向项目根目录C:\Users\viter\DoseV3Master,而不是其他路径。正确的PowerShell命令是:
$env:PYTHONPATH = "C:\Users\viter\DoseV3Master"
设置后激活虚拟环境,执行echo $env:PYTHONPATH验证路径是否正确。这一步是让Python能找到mysite这个子模块。
3. 不要用绝对路径设置DJANGO_SETTINGS_MODULE
无论是环境变量还是命令行参数,都应该使用模块路径mysite.settings,而非文件的绝对路径。如果需要临时指定,可以用以下命令:
python manage.py check --settings=mysite.settings
4. 检查项目结构细节
- 确保mysite文件夹下存在空的
__init__.py文件(Django 3.2+虽可不加,但添加后能避免模块识别问题)。 - 执行命令时,必须在项目根目录(
C:\Users\viter\DoseV3Master)下运行,不要进入mysite子文件夹执行。
5. 验证虚拟环境是否激活
确保你是在激活了venv虚拟环境的状态下执行命令,避免使用系统全局Python导致路径混乱。
内容的提问来源于stack exchange,提问作者Ali Vleotsky

