如何从PHP脚本向运行Python解释器的终端发送命令?

时间:2016-06-23 14:28:38

标签: php python shell interpreter maya

我想从PHP脚本访问终端以打开独立版本的Maya,然后从终端在Maya中运行Python脚本。

我已经能够使用exec()函数从我的PHP脚本向终端发送命令。例如,我已经能够使用以下代码使用.OBJ文件打开Maya。

//Open Maya with .OBJ
$cmd='open -a /Applications/Autodesk/maya2015/maya.app /Applications/AMPPS/www/webGL/upload/Character.obj';
exec($cmd);

然后我发现我可以使用这个目录在终端中打开一个Maya Python解释器: 的 /Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy

在终端中执行此目录时,它会运行Maya Python解释器。当解释器运行时,似乎我不再能够从我的PHP脚本向终端发送命令(现在是Python代码)。

我是否正在使用exec()功能执行我想要做的事情?或者这个功能只是在同一个终端中连续执行单个命令而不是多个命令?我是否需要使用不同的函数将命令发送到特定的shell,以便所有命令都在同一个终端中执行?

以下是我尝试发送到终端以运行Maya Python解释器然后导入Maya独立库并初始化它的代码。

//Open Maya interpreter
$cmd2="/Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy";
//Import standalone and initialise
$cmd3="import maya.standalone; maya.standalone.initialize( name='python' )"

//Execute commands
shell_exec($cmd2);
shell_exec($cmd3);

1 个答案:

答案 0 :(得分:2)

您不需要与mayapy分开编码,您可以直接使用mayapy运行脚本

<强> test.py

import os
import maya.standalone
maya.standalone.initialize()
import maya.cmds as cmds
print dir(cmds)

你可以像这样简单地调用这个脚本

mayapy /your/path/test.py

在你的情况下

$cmd2="/Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy /your/path/test.py";
shell_exec($cmd2);