通过Maya(Python)中的套接字运行导入的模块函数

2024-10-02 12:30:31 发布

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

我有一个问题,我不确定发生了什么,我创建了一个“userSetup.py”文件并将其放置在脚本文件夹(C:\Users*user*\Documents\maya\2022\scripts)中

这是我的userSetup.py文件:

def importPy():
    ### import modules and open a command port ###
    exec("import my_module", globals())
    exec("cmds.commandPort(name=':1234', sourceType = 'python')")
    exec("print('FINISHED')")

def tryImport():
    """
    execute importPy when Maya is idle
    """
    from maya.utils import executeDeferred
    executeDeferred("importPy()")

tryImport()

现在我已经创建了一个文件“my_module.py”,并将其放在同一个脚本文件夹中

这是my_module.py文件:

print("my_module loaded")

def function_print(statement: str):
    print(statement)

我知道这在启动时起作用,因为Maya中的控制台显示:

my_module loaded
FINISHED

我已成功地通过以下简单命令发送了一个命令:

cmds.polyCube()

它工作良好,甚至返回良好,我发现这很奇怪,因为我没有回显输出,所以套接字服务器按预期工作。但如果我发送:

my_module.function_print("please print this")

它不起作用,但如果我在Maya中的python命令行中编写完全相同的行,它就会起作用

这对我来说真的没有意义,我对python还相当陌生,所以我可能在这里遗漏了一些明显的东西。但我所能想到的是,套接字命令不知何故无法访问全局范围

如果有人知道这是怎么回事,我们将不胜感激

谢谢, 布伦丹

另外,我的模块和函数的名称已经为本例编成。如果这不明显的话


Tags: 文件pyimport命令脚本文件夹mydef

热门问题