使用mod_wsgi部署Django时遇ModuleNotFoundError:找不到django模块
解决mod_wsgi部署Django时的ModuleNotFoundError问题
出现ModuleNotFoundError: No module named 'django'通常是虚拟环境未被正确识别、权限不足或依赖未安装导致的,以下是具体排查和解决步骤:
确认虚拟环境中已安装Django
登录服务器后,进入虚拟环境检查Django是否存在:source /home/djangoproject/venv/bin/activate pip list | grep Django若没有任何输出,说明未安装Django,执行
pip install django(如需指定版本,加上==x.x.x)。修复Apache进程的访问权限
Apache默认以www-data用户运行,需确保该用户能读取项目和虚拟环境目录:sudo chown -R www-data:www-data /home/djangoproject sudo chmod -R 755 /home/djangoproject验证mod_wsgi与虚拟环境Python版本兼容性
mod_wsgi与编译时绑定的Python版本强关联,若虚拟环境Python版本和mod_wsgi绑定版本不一致,会导致无法加载虚拟环境内的包:- 查看mod_wsgi对应的Python版本:
mod_wsgi-express module-config - 查看虚拟环境的Python版本:
/home/djangoproject/venv/bin/python --version
若版本不一致,需重新编译mod_wsgi适配虚拟环境的Python版本,或更换虚拟环境的Python版本。
- 查看mod_wsgi对应的Python版本:
手动指定虚拟环境路径(可选)
若以上步骤无效,可在项目的wsgi.py开头添加虚拟环境site-packages路径,强制Python加载该目录下的依赖:import sys import os # 替换X.X为你的虚拟环境Python版本号(比如3.8) venv_site_packages = '/home/djangoproject/venv/lib/pythonX.X/site-packages' sys.path.insert(0, venv_site_packages) sys.path.insert(0, '/home/djangoproject') os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoproject.settings') from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
完成以上操作后,重启Apache服务(sudo systemctl restart apache2),再访问站点测试。
内容的提问来源于stack exchange,提问作者PR0J3CT
相关产品推荐
相关产品推荐

