PHP 无法执行 Flask - 没有名为 flask 的模块

Flask cannot be executed by PHP - No module named flask

嘿,我有一个 PHP 脚本,它应该使用 exec 命令启动一个 Python flask 文件。我的问题是文件执行后总是报错:

Traceback (most recent call last): File "/opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py", line 2, in from flask import Flask, request, jsonify, render_template, Response ImportError: No module named flask

如果我 运行 终端中的脚本,它可以正常工作。我没有在 PHP 脚本中激活 Virtualenv,因为它会导致另一个错误,我读到你在新版本中不再需要它。也许有人知道答案?

PHP:

echo shell_exec ("python /opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py 2> & 1");

航站楼:

source /opt/lampp/htdocs/memeon_data/Python-3.8.3/venv/bin/activate

python /opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py

您必须激活 venv 才能将 pythonFlask

一起使用

您可以创建 bash 脚本,即。 run.sh

#!/bin/bash 
   
source /opt/lampp/htdocs/memeon_data/Python-3.8.3/venv/bin/activate
python /opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py

和运行它在PHP和bash

shell_exec("/bin/bash /opt/lampp/htdocs/memeon_data/Python-3.8.3/run.sh 2>&1");

或者你可以跳过这个脚本,你可以尝试使用在 venv/bin 中创建的 python 的完整路径 - 而这个 python 应该使用安装在 [=13] 中的模块=]

shell_exec("/opt/lampp/htdocs/memeon_data/Python-3.8.3/venv/bin/python /opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py 2>&1");

顺便说一句: 应该是没有空格的 2>&1 - 单个 & 用于 运行 在后台处理并带有空格可能会在后台将其视为 运行ning,或者它可能会给出错误的语法错误。