Django运行服务器报错:ModuleNotFoundError: No module named 'requests'
解决Django启动时找不到requests模块的问题
你遇到的核心问题是Python环境不匹配:你用sudo pip3安装的requests存放在普通用户的.local目录里,但启动Django时使用的Python解释器并没有读取这个路径,或者指向了另一个独立的环境。下面是具体的排查和解决步骤:
1. 确认Django使用的Python版本与pip对应
先搞清楚你启动Django时用的是哪个Python解释器:
- 如果你用
python manage.py runserver启动,运行which python查看路径;如果是python3,就运行which python3。 - 再运行
which pip3,对比两个路径是否属于同一个Python环境。比如python3路径是/usr/bin/python3,但pip3指向/home/sadegh-khan/.local/bin/pip3,说明pip安装的包在用户目录,但系统Python可能读不到。
解决办法:直接用对应Python的内置pip安装,确保包进入Django使用的环境:
python3 -m pip install requests
(把python3换成你启动Django时用的命令,比如python)
2. 检查是否启用了虚拟环境
如果你的Django项目用了虚拟环境(比如venv、virtualenv),必须先激活虚拟环境再安装requests,否则包会装到全局环境里,虚拟环境内依然找不到:
- Linux/macOS激活命令:
source 你的虚拟环境目录/bin/activate
- 激活后运行
pip install requests,再启动Django即可。
3. 避免用sudo安装用户级包
sudo pip3会以root权限安装包,可能导致包被放到root的Python环境中,普通用户运行Django时无法访问。后续安装包尽量不用sudo,而是用--user参数安装到用户目录:
pip3 install requests --user
你已经安装过了,重点是确保Django用的Python能读取这个目录。
4. 验证Python路径是否包含requests的安装目录
运行下面的命令,查看当前Python解释器的搜索路径:
python3 -c "import sys; print('\n'.join(sys.path))"
检查输出里有没有/home/sadegh-khan/.local/lib/python3.6/site-packages。如果没有,可以临时设置PYTHONPATH再启动Django:
export PYTHONPATH="/home/sadegh-khan/.local/lib/python3.6/site-packages:$PYTHONPATH" python3 manage.py runserver
也可以把这个路径加到你的bashrc/zshrc里,实现永久生效。
内容的提问来源于stack exchange,提问作者Sadegh-khan
相关产品推荐
相关产品推荐

