请先找到你终端里具体的错误信息,然后对照下面的内容进行排查。

第一步:定位错误信息
在你运行命令的终端窗口里,错误信息通常会在 或者 之后,它会告诉你哪里出了问题。
ModuleNotFoundError: No module named 'django'OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured.ValueError: Missing 'SECRET_KEY' in settings.
请将你的完整错误信息贴出来,这能极大地帮助我(或任何人)帮你定位问题。
第二步:按常见错误原因排查
以下是导致 python runserver 报错的几个最主要原因:
Django 没有安装或版本不匹配
这是最最常见的问题,特别是对于初学者。

-
错误信息示例:
ModuleNotFoundError: No module named 'django'ImportError: No module named django
-
问题分析: 你的 Python 环境中没有安装 Django 框架,或者你安装了,但 Python 解释器找不到它,这通常是因为你在一个没有安装 Django 的虚拟环境中运行了命令。
-
解决方案:
-
检查是否安装了 Django:
pip list # 或者 pip show django
如果看不到
django,或者Version是None,说明没有正确安装。 -
安装 Django:
pip install django
-
强烈推荐使用虚拟环境: 为了避免项目之间的库冲突,最佳实践是为每个项目创建一个独立的虚拟环境。
# 1. 创建虚拟环境 (venv 是环境名,可以自定义) python -m venv venv # 2. 激活虚拟环境 # Windows: .\venv\Scripts\activate # macOS / Linux: source venv/bin/activate # 3. 激活后,你的命令行提示符前会出现 (venv) # 现在再安装 Django pip install django # 4. 在虚拟环境中运行你的项目 python manage.py runserver
-
端口被占用
runserver 默认使用 8000 端口,如果这个端口被其他程序(比如另一个 runserver 实例、Skype、或其他应用)占用了,服务器就会启动失败。
-
错误信息示例:
OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试OSError: [Errno 48] Address already in useError: That port is already in use.
-
问题分析: 8000 端口“占线”了。
-
解决方案:
-
更换一个端口: 在
runserver命令后面加上新的端口号,8001。python manage.py runserver 8001
-
查看并占用端口 (高级): 如果你想继续使用 8000 端口,可以先找到占用它的进程并关闭它。
- Windows:
netstat -ano | findstr :8000 # 找到最后一列的 PID (进程 ID) # 然后使用任务管理器结束该进程,或在命令行中: taskkill /F /PID <PID>
- macOS / Linux:
lsof -i :8000 # 找到 PID # 然后杀死进程 kill -9 <PID>
- Windows:
-
项目配置错误 (settings.py)
Django 项目的核心配置在 settings.py 文件中,这里的错误通常会导致服务器无法正常启动。
-
错误信息示例:
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured.ValueError: Missing 'SECRET_KEY' in settings.django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
-
问题分析:
- 数据库配置错误:
DATABASES设置可能缺少某些必需的键,或者格式不正确。 - 密钥缺失:
SECRET_KEY是 Django 安全所必需的,它不能为空,如果你在.gitignore中忽略了它,或者从未设置过,就会报错。 - 应用未注册:
INSTALLED_APPS列表中列出了一个不存在的应用。
- 数据库配置错误:
-
解决方案:
-
检查
SECRET_KEY: 打开your_project/settings.py文件,确保SECRET_KEY有一个长而复杂的值,如果你没有,可以在线生成一个并替换掉空的值。# settings.py SECRET_KEY = 'django-insecure-@#your-super-secret-key-here$%^&*'
-
检查
DATABASES: 确保default数据库配置是正确的,对于初学者,通常是sqlite3,配置如下:# settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', # 确保这个路径正确 } } -
检查
INSTALLED_APPS: 确保你创建的所有新应用都已添加到INSTALLED_APPS列表中。# settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 添加你的应用 'myapp', # <-- 确保在这里 ]
-
代码语法错误或逻辑错误
在你项目的某个 Python 文件中(views.py, models.py, urls.py)存在语法错误或运行时错误。
-
错误信息示例:
File "myapp/views.py", line 10print("Hello)^SyntaxError: EOL while scanning string literalNameError: name 'undefined_variable' is not definedAttributeError: 'str' object has no attribute 'my_method'
-
问题分析: Python 解释器在执行
runserver命令时,需要加载你的所有代码,如果遇到无法理解的代码(语法错误)或引用了不存在的变量/方法(运行时错误),它就会停止并报错。 -
解决方案:
- 仔细阅读错误堆栈跟踪: 错误信息会精确地告诉你哪个文件的哪一行出了问题。
- 修复语法错误: 检查提示的行,看看是否有缺少的引号、括号、冒号等。
- 修复逻辑错误: 检查变量名是否拼写正确,方法或属性是否存在。
环境变量问题
如果你的项目依赖某些环境变量(例如数据库密码、API密钥),而这些变量没有被设置,runserver 也会失败。
-
错误信息示例:
KeyError: 'DATABASE_PASSWORD'django.core.exceptions.ImproperlyConfigured: Requested setting DATABASE_PASSWORD, but settings are not configured.
-
问题分析: 你的代码试图从一个环境变量中读取配置,但该变量不存在。
-
解决方案:
-
在终端中临时设置 (仅当前会话有效):
# Windows (CMD) set DATABASE_PASSWORD="your_password" # Windows (PowerShell) $env:DATABASE_PASSWORD="your_password" # macOS / Linux export DATABASE_PASSWORD="your_password" # 设置好后,再运行 runserver python manage.py runserver
-
使用
.env文件 (推荐): 安装python-decouple或django-environ库,然后在项目根目录创建一个.env文件,将变量写进去,并在settings.py中读取它,这样更安全、更方便。
-
总结与排查步骤
当你遇到 python runserver 报错时,请按以下顺序进行排查:
- 复制完整错误信息: 这是最重要的第一步。
- 检查是否在虚拟环境中: 确保你已经激活了项目的虚拟环境,
pip list中能看到django。 - 检查端口: 尝试更换一个端口运行,
python manage.py runserver 8001。 - 检查
settings.py: 重点检查SECRET_KEY和DATABASES配置是否正确。 - 检查代码语法: 仔细阅读错误堆栈,定位到具体的文件和行号,修复语法或逻辑错误。
- 检查环境变量: 如果错误提示缺少某个变量,确保它已正确设置。
如果以上步骤都无法解决你的问题,请将你的完整错误信息、操作系统、Python 版本、Django 版本以及你尝试过的步骤发出来,我会继续为你分析。
