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

如何修复passenger_wsgi.py中‘Web应用无法启动’及Django模块找不到错误

解决ModuleNotFoundError: No module named 'django'问题

以下是针对Passenger部署场景下找不到Django模块的排查与解决步骤:

1. 确认Python环境一致性

Passenger运行时使用的Python版本,大概率和你终端安装Django的版本不一致,这是此类问题的核心原因:

  • 在passenger_wsgi.py开头添加调试代码:
    import sys
    print("Passenger使用的Python路径:", sys.executable)
    print("当前Python路径列表:", sys.path)
    
    重启Passenger服务后,查看服务器日志(如Apache/Nginx错误日志),获取Passenger对应的Python路径。
  • 在终端执行以下命令,对比安装Django的Python环境:
    # 查看终端默认Python路径
    which python3
    # 查看Django的安装位置
    python3 -m pip show django
    
    若两个Python路径不同,直接说明环境不匹配。

2. 手动指定Django所在路径

如果不想切换环境,可直接在passenger_wsgi.py中添加Django所在的site-packages路径:

import sys
# 替换成你截图中Django模块的实际路径,比如/usr/local/lib/python3.10/site-packages
sys.path.insert(0, '/path/to/django/site-packages')

3. 使用虚拟环境隔离环境(推荐方案)

虚拟环境能彻底规避环境冲突问题:

  • 创建并激活虚拟环境:
    python3 -m venv my_django_env
    source my_django_env/bin/activate
    
  • 激活后安装Django:
    pip install django
    
  • 在passenger_wsgi.py开头添加虚拟环境路径配置:
    import sys, os
    # 替换成你的虚拟环境绝对路径
    VENV_PATH = '/home/your_user/my_django_env'
    os.environ['VIRTUAL_ENV'] = VENV_PATH
    sys.path.insert(0, os.path.join(VENV_PATH, 'bin'))
    # 替换成对应Python版本的site-packages路径
    sys.path.insert(0, os.path.join(VENV_PATH, 'lib/python3.10/site-packages'))
    

4. 配置Passenger指定Python解释器

在项目根目录的.htaccess文件中,直接指定Passenger使用的Python路径:

PassengerPython /path/to/your/python3

比如你的终端Python路径是/usr/local/bin/python3,就填写该路径。

内容的提问来源于stack exchange,提问作者Амир Рамешк

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:45:04