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

Python PHP无法执行Flask-没有名为Flask的模块,python,php,flask,terminal,virtualenv,Python,Php,Flask,Terminal,Virtualenv,嘿,我有一个PHP脚本,应该用exec命令启动Python flask文件。我的问题是文件在执行后总是有错误: 回溯(最近一次调用上次):文件 “/opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py”,第2行,来自 烧瓶导入烧瓶,请求,jsonify,呈现模板,响应 ImportError:没有名为flask的模块 如果我在终端中运行脚本,它将正常工作。我没有在PHP脚本中激活Virtualenv,因为它会导致另一个错误,我了解到新版本中不再需要它

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

回溯(最近一次调用上次):文件 “/opt/lampp/htdocs/memeon_data/Python-3.8.3/main.py”,第2行,来自 烧瓶导入烧瓶,请求,jsonify,呈现模板,响应 ImportError:没有名为flask的模块


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

PHP:

终端:

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
才能将
python
Flask

您可以创建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
的完整路径,并且此p
python
应使用安装在
venv
中的模块

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
——single
&
用于在后台运行进程,如果有空格,它可能会将进程视为在后台运行,或者它可能会将错误视为语法错误。

如果在内部使用
venv
运行它,则必须在PHP中执行相同的操作-创建shell/bash运行
venv
main.py
的脚本,然后在PHP中使用此脚本。现在您运行
main.py
而不运行
venv
,因此它运行Python而不运行
flask
顺便说一句,要运行而不激活
venv
,您必须使用
/full/path/venv/bin/Python
而不是
Python
,如果您在激活
venv
时出现错误,请将其显示出来(无注释)顺便说一句:对于我来说,它应该是没有空格的
2>&1
——单个
&
用于在后台运行进程,当您添加空格时,它可能会将其视为在后台运行,而不是重定向。“我读到您不再需要它了”您自己测试过吗?试着在不激活venv的情况下跑步,看看会发生什么。谢谢你的回答。我找了很久这个问题。实际上,我有2>&1,但StackOverflow可能做了一个改变。非常感谢您现在已经尝试过了。最终作品:D
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");