在Apache2中从php执行Python脚本时出错

2024-10-03 02:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个使用apache2管理的web应用程序,我试图解决的问题是使用php运行python脚本,我正在附加代码:

PHP CODE:

<?php
    $command = escapeshellcmd("/usr/bin/python3.6 /var/www/html/yoloface-master/showInWeb.py");
    $output = shell_exec($command);
    echo $output;
?>
PYTHON CODE

#!/usr/bin/python3.6
import hashlib, os, sys, cv2, PIL, subprocess, glob, numpy, django, random
from PIL import Image
import shutil



def showInWeb():

    pathYolo = 'yoloface-master/'
    os.chdir(pathYolo)
    photo = random.choice(os.listdir("../Database/ARCHIVIOIMAGO"))
    path = '../Database/ARCHIVIOIMAGO/'
    print(photo)
    shutil.rmtree('outputs/')
    processPhoto = path + photo
    command_line = ('python3.6', 'yoloface.py', '--image', processPhoto, '--output-dir', 'outputs/')
    print(subprocess.run(command_line))

showInWeb();

作为IDE,我使用的是pyCharm,如果我在pyCharm终端中运行相同的命令行(我不在虚拟环境中),程序运行不会出现问题,但是如果我通过php脚本运行它,我会得到一个错误,如“没有名为cv2的模块”,这使我猜测php使用的是不同的版本。 我在互联网上读到一个可能的解决方案是将“sudo”放在命令行上,如:

sudo /usr/bin/python3.6 /var/www/html/yoloface-master/showInWeb.py

但我得到了这个错误:

sudo: no tty present and no askpass program specified

我该怎么办


Tags: pyimportmaster脚本outputbinosusr