在PYTHON中将网格从一个进程传输到另一个进程

在PYTHON中将网格从一个进程传输到另一个进程,python,maya,pymel,Python,Maya,Pymel,我一直在为这件事绞尽脑汁,但什么也没想到。 我希望我的脚本在另一个已经启动的进程中执行一个.py文件。我打开了一个maya进程,在例如modo中,我希望在该maya中启动文件hello.py(打印“hello!”) 我已经得到了maya进程的PID,但不知道如何实际发送命令来执行 子流程或信号模块中是否有可能丢失的属性/标志?还是用另一种方式 import os openedMaya = [] r = os.popen('tasklist /v').read().strip().split('

我一直在为这件事绞尽脑汁,但什么也没想到。 我希望我的脚本在另一个已经启动的进程中执行一个.py文件。我打开了一个maya进程,在例如modo中,我希望在该maya中启动文件hello.py(打印“hello!”)

我已经得到了maya进程的PID,但不知道如何实际发送命令来执行

子流程或信号模块中是否有可能丢失的属性/标志?还是用另一种方式

import os

openedMaya = []
r = os.popen('tasklist /v').read().strip().split('\n')
for i in range(len(r)):
    s = r[i]
    if 'maya.exe' in s and ': untitled' in s:
        openedMaya.append(s)
mayaPID = openedMaya.split('maya.exe')[1].split('Console')[0]

我需要一个可以在maya进程中执行hello.py的命令。

您可以使用
RPyC
充当桥接器,以便可以从一个软件到另一个软件进行通信。其思想是使用
RPyC
在Maya中运行空闲服务器,其中
PYTHONPATH
也指向您的
hello.py
脚本。此服务器在会话中保持活动状态,但用户不应注意到它的存在

然后在其他软件中使用
RPyC
使用与服务器相同的端口广播消息,以便在Maya中触发该消息。这将运行您的命令

它的开销稍大一些,但我已经成功地将其用于独立工具,以触发Maya中的事件。至于使用
子进程
,您可以使用它在新的Maya会话中运行命令,但我认为没有办法将其用于现有会话


希望这会推动您朝正确的方向前进。

也许更简单的方法是使用中间文件传输网格。一个进程创建文件,另一个进程(在主机应用程序中运行)读取文件。

感谢您的建议,最后我通过打开maya端口,启动mel命令(在启动时)找到了解决方案:

commandPort-n:”;
并通过插座从modo连接到该端口:

HOST = '127.0.0.1'
PORT = <some_port>
ADDR=(HOST,PORT)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ADDR)
client.send(<message_that_you_want_to_send)
data = client.recv(1024)
client.close()
HOST='127.0.0.1'
端口=
地址=(主机,端口)
client=socket.socket(socket.AF\u INET,socket.SOCK\u流)
client.connect(ADDR)

发送(你可以使用commandPort,socket和thread来实现这个,我就是这么做的。谢谢!
HOST = '127.0.0.1'
PORT = <some_port>
ADDR=(HOST,PORT)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ADDR)
client.send(<message_that_you_want_to_send)
data = client.recv(1024)
client.close()