You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

共享主机部署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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:15:12