python - cPanel 应用程序在 Python2 而不是 Python3 上运行

标签 python cpanel passenger wsgi

我在 cPanel 中有一个 VPS 托管,还有一个 Flask-App。 我按照How to install WSGI Application in cPanel的指示进行操作.

当我使用终端运行应用程序时,一切正常,但是当我打开应用程序 URL 时,它显示以下错误:

Traceback (most recent call last):
  File "/opt/cpanel/ea-ruby24/root/usr/share/passenger/helper-scripts/wsgi-loader.py", line 369, in <module>
    app_module = load_app()
  File "/opt/cpanel/ea-ruby24/root/usr/share/passenger/helper-scripts/wsgi-loader.py", line 76, in load_app
    return imp.load_source('passenger_wsgi', startup_file)
  File "/home/qsemh/Maidan/passenger_wsgi.py", line 8, in <module>
    wsgi = imp.load_source('wsgi', 'wsgi.py')
  File "wsgi.py", line 1, in <module>
    from flaskr import create_app
  File "/home/qsemh/Maidan/flaskr/__init__.py", line 133
    print(f"Validate {len(users)} Users At {current_time}")
                                                         ^
SyntaxError: invalid syntax

所以我决定创建一个更简单的应用程序来检测问题,该应用程序如下:

passenger_wsgi.py

#!/usr/bin/env python3
import sys
from flask import Flask

application = Flask(__name__)

application.route("/")
def index():
    return sys.version

当我使用 URL 运行这个简单的应用程序时,它显示以下内容作为响应:

2.7.5 (default, Apr 2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

即使我在文件开头使用了 shebang #!/usr/bin/env python3 ,当我使用终端运行它时,它的工作方式就像使用 python3 一样.

我尝试将 shebang 更改为以下格式:

#!/usr/bin/python3

#!/usr/bin/env 'python3'

但他们给出了相同的结果。

这里有什么问题,我该如何解决它?

最佳答案

我找到了解决此问题的正确方法;

基本上,我只需要在 passenger_wsgi.py 文件的开头添加以下几行:

import os
INTERP = "/usr/bin/python3"
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)

所以最终结果是:

passenger_wsgi.py


#!/usr/bin/env python3
import sys
import os

# Solution
INTERP = "/usr/bin/python3"
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)

from flask import Flask

application = Flask(__name__)

application.route("/")
def index():
    return sys.version

并且响应是正确的,正如我最初的意图:

3.6.8 (default, Apr  2 2020, 13:34:55) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

关于python - cPanel 应用程序在 Python2 而不是 Python3 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64374198/

相关文章:

Python:opencv warpPerspective 既不接受 2 也不接受 3 个参数

python - 获取两小时前的 gmt 时间 Python 2.7

python - pop()函数没有完全弹出列表中位数

linux - WGET 和 Google Save Browsing API v4 -

ruby-on-rails - Rails - 使用 Capistrano 部署后需要重新启动 Nginx?

python - 从头开始微调/训练 HuggingFace 模型的正确方法 (PyTorch)

cron - 在 cpanel 中使用 cron 作业进行数据库备份

php - 不能使用 CURLOPT_INTERFACE

ruby-on-rails - 请升级到 Ruby 1.9.3 或更新版本以继续

ruby-on-rails - NGINX 和配置文件中的环境变量