cPanel中Python 3.11应用报错:passenger_wsgi模块未找到求助
问题原因
- Python3模块导入规则限制:Python3不允许把带绝对路径和
.py后缀的文件当作模块名导入,但cPanel的Passenger在Python3环境下错误地用这种方式加载passenger_wsgi.py,直接导致模块找不到。 - 虚拟环境版本不匹配:日志里显示用的是Python3.10的虚拟环境,但你新建的是Python3.11应用,环境版本对不上也会引发加载异常。
- 运行环境差异:bash里执行
python -m passenger_wsgi能成功,是因为当前shell的Python环境已经把项目目录加入了模块搜索路径,而且用了正确的模块名(不带后缀)调用,但cPanel的Passenger运行环境的调用逻辑或路径配置有问题。
解决步骤
修正WSGI文件的调用配置
- 打开cPanel的「Setup Python App」界面,找到你的应用配置,把「Application startup file」字段改成
passenger_wsgi(不要带.py后缀,也不要写完整绝对路径)。
- 打开cPanel的「Setup Python App」界面,找到你的应用配置,把「Application startup file」字段改成
统一虚拟环境与应用的Python版本
- 删除旧的3.10虚拟环境,重新创建3.11版本的:
rm -rf /home/sulphur1/virtualenv/basic/3.10 python3.11 -m venv /home/sulphur1/virtualenv/basic/3.11 - 回到cPanel的Python应用配置,选择刚创建的3.11虚拟环境,重新部署应用。
- 删除旧的3.10虚拟环境,重新创建3.11版本的:
调整模块搜索路径
- 在
passenger_wsgi.py的最开头加上这段代码,把项目根目录加入Python的模块搜索路径:import sys sys.path.insert(0, '/home/sulphur1/basic') - 如果是Django项目,还要确保文件里的Django配置正确:
import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings') from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
- 在
测试验证
- 重启cPanel里的Python应用,查看日志是否还有报错。
- 如果还是出问题,可以先把
passenger_wsgi.py换成基础测试代码,确认环境能正常运行:def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return [b"Python 3.11\nit works!"] - 测试成功后再恢复Django的配置内容。
内容的提问来源于stack exchange,提问作者Abdullah Sheehan
相关产品推荐
相关产品推荐

