Apache部署虚拟环境Django报ModuleNotFoundError: No Module Named Django
问题根因
你安装的libapache2-mod-wsgi-py3是基于系统默认Python 3.6编译的,和项目虚拟环境使用的Python 3.9版本不兼容,导致mod_wsgi无法正确加载虚拟环境内的依赖包,因此找不到已安装的Django模块。
解决步骤
- 先卸载系统默认安装的mod_wsgi组件:
sudo apt remove libapache2-mod-wsgi-py3 -y sudo apt autoremove -y
- 激活项目虚拟环境,使用pip安装对应Python版本的mod_wsgi:
source /home/sidharth/Downloads/gmcwebenvlin/bin/activate pip install mod_wsgi
- 执行以下命令获取mod_wsgi的模块配置信息:
mod_wsgi-express module-config
执行后会输出两行类似如下的内容,完整复制:
LoadModule wsgi_module "/home/sidharth/Downloads/gmcwebenvlin/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.so" WSGIPythonHome "/home/sidharth/Downloads/gmcwebenvlin"
- 编辑apache的wsgi模块加载配置:
sudo nano /etc/apache2/mods-available/wsgi.load
清空文件原有内容,粘贴刚才复制的两行配置后保存退出。
- 启用wsgi模块并重启apache服务:
sudo a2enmod wsgi sudo systemctl restart apache2
补充验证
如果重启后仍有报错,可检查目录权限,确保apache运行用户有项目和虚拟环境的读取权限:
sudo chown -R www-data:www-data /home/sidharth/Downloads/gmcweb sudo chown -R www-data:www-data /home/sidharth/Downloads/gmcwebenvlin
内容的提问来源于stack exchange,提问作者Sidharth kaushik
相关产品推荐
相关产品推荐

