共享主机部署Django遇Settings模块找不到的问题求助
解决YouStable共享主机Django部署的500错误(找不到settings文件)
问题概况
此前在YouStable成功部署过Django站点,因应用名称与保留字冲突删除后,重新创建新项目时出现500服务器错误,核心报错为ModuleNotFoundError: No module named 'mysite.settings'。
操作流程:
- 通过cPanel「Setup Python app」创建Python 3.11应用(名称myapp),生成虚拟环境
/home/username/virtualenv/appname/3.11/ - 激活虚拟环境安装Django,用
django-admin startproject mysite创建项目 - 在cPanel中指定wsgi.py路径为
/mysite/site/wsgi.py,系统确认路径有效,但仍触发500错误
关键报错细节
stderr.log显示:服务器大部分时间使用正确的用户虚拟环境,但加载passenger_wsgi.py和importlib.py时,调用的是系统全局Python路径/opt/alt/python311/lib64/python3.11,而非用户虚拟环境的Python,最终导致找不到项目settings模块。
解决方案
1. 修正passenger_wsgi.py文件
YouStable的Passenger可能未自动配置虚拟环境的激活逻辑,需手动修改项目根目录下的passenger_wsgi.py,确保强制使用用户虚拟环境并添加项目路径到Python搜索路径:
import sys, os # 激活用户虚拟环境 venv_activate = '/home/username/virtualenv/appname/3.11/bin/activate_this.py' with open(venv_activate) as f: exec(f.read(), {'__file__': venv_activate}) # 添加Django项目根目录到sys.path(替换为你的实际项目路径) project_root = '/home/username/mysite' if project_root not in sys.path: sys.path.insert(0, project_root) # 明确指定Django settings模块 os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' # 初始化Django并加载WSGI应用 import django django.setup() from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
2. 验证路径与权限
- 确认cPanel中指定的wsgi.py路径为绝对路径,正确路径应为
/home/username/mysite/mysite/wsgi.py(startproject生成的项目结构是外层mysite目录下包含内层mysite子目录,其中存放wsgi.py) - 检查虚拟环境和项目文件的权限:目录设为
755,文件设为644,确保服务器进程有权读取 - 确认所有文件的所有者为你的cPanel用户名(避免权限归属错误导致无法访问)
3. 重新创建并重启Python应用
- 删除当前cPanel中的Python应用,清理残留的配置文件
- 重新创建Python 3.11应用,创建时直接指定项目根目录为
/home/username/mysite - 配置wsgi路径时选择自动检测或手动输入正确的绝对路径
- 应用创建完成后,点击「Restart」按钮重启服务
4. 清理缓存
- 删除项目目录下的
__pycache__文件夹 - 清除虚拟环境中可能的旧缓存文件,可通过
pip cache purge命令在虚拟环境中执行
内容的提问来源于stack exchange,提问作者Cloudberry
相关产品推荐
相关产品推荐

