Python PHP无法执行Flask-没有名为Flask的模块
嘿,我有一个PHP脚本,应该用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,因为它会导致另一个错误,我了解到新版本中不再需要它
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
的完整路径,并且此ppython
应使用安装在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");