未添加--noreload时Django runserver_plus启动失败求助
问题原因
当runserver_plus启用自动重载(不添加--noreload)时,会启动子进程监控文件变化并重新加载服务。此时子进程的路径处理逻辑存在问题:如果你用相对路径(backoffice/manage.py)启动服务,子进程会尝试在自身工作目录下查找该路径,而非继承父进程的路径解析结果,最终导致找不到manage.py文件。这种情况在你使用的Django 4.1.9 + django-extensions 3.2.1版本组合中,可能触发了路径解析的兼容性bug。
解决办法
切换到manage.py所在目录执行命令
先进入backoffice目录再启动服务,让子进程直接在当前目录定位manage.py:cd backoffice python manage.py runserver_plus 0.0.0.0:8000使用绝对路径指定manage.py
直接用manage.py的完整绝对路径执行命令,不受子进程工作目录影响:python /你项目的绝对路径/backoffice/manage.py runserver_plus 0.0.0.0:8000升级django-extensions到最新稳定版
3.2.1版本可能存在该路径解析bug,升级到新版本大概率修复问题:pip install --upgrade django-extensions通过环境变量指定配置,用django-admin启动
设置DJANGO_SETTINGS_MODULE环境变量后,无需指定manage.py路径即可启动服务:# Linux/macOS export DJANGO_SETTINGS_MODULE=backoffice.settings django-admin runserver_plus 0.0.0.0:8000 # Windows cmd set DJANGO_SETTINGS_MODULE=backoffice.settings django-admin runserver_plus 0.0.0.0:8000 # Windows PowerShell $env:DJANGO_SETTINGS_MODULE = "backoffice.settings" django-admin runserver_plus 0.0.0.0:8000
内容的提问来源于stack exchange,提问作者Oscar
相关产品推荐
相关产品推荐

