cPanel部署Django时Python版本识别错误 配置3.7.12识别为2.6.6
cPanel部署Django时Python版本识别为2.6.6的解决方案
核心原因是cPanel系统默认预装的Python 2.6.6路径优先级高于手动配置的3.7环境,加上Passenger(cPanel托管Python应用的默认服务)未指定正确解释器路径,导致所有调用默认走系统旧版本。按以下步骤排查修复即可:
- 先获取Python 3.7的绝对路径
SSH登录服务器后执行find / -name "python3.7" 2>/dev/null,如果是通过cPanel官方「Setup Python App」插件创建的虚拟环境,路径一般格式为/home/你的cPanel账号名/virtualenv/你创建的应用标识名/3.7/bin/python3.7;如果是手动编译安装的3.7.12,一般在/usr/local/bin/python3.7,把这个完整路径记下来,后续所有操作都用绝对路径,不要用python/python3这类相对命令。 - 修正Passenger的wsgi入口配置
打开项目根目录下的passenger_wsgi.py文件,在文件最顶部第一行加入解释器声明,前面不能有任何空行或者其他代码:#!/你刚才查到的python3.7完整绝对路径 import os import sys # 原有wsgi配置保留不动,比如os.environ.setdefault("DJANGO_SETTINGS_MODULE", "你的项目名.settings") 这部分不要改 - 修正.htaccess强制指定解释器
打开域名根目录的.htaccess文件,加入一行配置:PassengerPython /你刚才查到的python3.7完整绝对路径不要尝试直接替换
/usr/bin/python下的系统默认Python,cPanel自身的后台服务强依赖2.6.6版本,强行替换会直接导致面板崩溃。 - 修正虚拟环境操作逻辑
后续安装依赖、执行Django命令(比如migrate、collectstatic)时,不要直接敲pip/python,全部用虚拟环境下的对应绝对路径执行,比如装Django就执行:
执行migrate就执行:/home/你的cPanel账号名/virtualenv/你创建的应用标识名/3.7/bin/pip install django==适配3.7的版本/home/你的cPanel账号名/virtualenv/你创建的应用标识名/3.7/bin/python manage.py migrate - 重启应用生效
回到cPanel的「Setup Python App」页面,选中对应的Django应用,确认版本下拉选的是3.7.12,点击保存后一定要点「Restart」重启应用,光保存配置不会加载新内容。
验证方式:在项目目录下新建一个version_check.py,内容写import sys; print(sys.version),用刚才的绝对路径执行这个文件,输出3.7.12就是配置正确。
内容的提问来源于stack exchange,提问作者Mehul Talpada
相关产品推荐
相关产品推荐

