从php中执行python

时间:2018-11-18 15:19:35

标签: php python

所以我的目录结构是这样的:

<ul class="photos ui-sortable">
<li class="photo" data-id="26">Ratee</li>
<li class="photo" data-id="25">Ooops</li>
 <li class="photo" data-id="24">missouri</li>
 <li class="photo" data-id="23">notea</li>
  <li class="photo" data-id="22">sigma</li>
    <li class="photo" data-id="21">pawal</li>
   
    
   
    
    
</ul>

我现在执行my_project的方式是通过在parent_folder中启动一个终端,然后执行以下命令:

parent_folder
    my_project
        __init__.py
        __main__.py
        models
            __init__.py
            a_model.py
        controllers 
            __init__.py
            a_controller.py
        utilities
            __init__.py
            a_utility.py

这很好。但是,我希望从PHP脚本中执行此操作:

python -m my_project

但是,它不起作用。刚接触python时,我只是想知道这样做的方式是什么?

1 个答案:

答案 0 :(得分:1)

如果您检查错误日志,则可能会看到一条消息,提示can't find '__main__' module in /path/to/parent_folder。您必须在命令中添加“ 2>&1”,以使shell_exec返回错误输出。

要复制运行项目的方式,应使用cd切换到模块目录,然后运行python

<?php
$output=shell_exec('cd /path/to/parent_folder && python -m my_project 2>&1');
echo "<pre>$output</pre>";
?>

另一种方法是将模块的路径添加到PYTHONPATH,python -m在搜索模块时使用。您可以在调用Shell之前在PHP中或在系统上全局执行此操作。在PHP中将是:

<?php
putenv("PYTHONPATH=/path/to/parent_folder");
shell_exec('python -m my_project 2>&1');
echo "<pre>$output</pre>";
?>