Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定PyQt是否在Maya中运行_Python_Pyqt_Maya - Fatal编程技术网

Python 确定PyQt是否在Maya中运行

Python 确定PyQt是否在Maya中运行,python,pyqt,maya,Python,Pyqt,Maya,我一直在用PyQt为Maya制作工具。因此,它必须执行Maya命令。这意味着程序将导入Maya库。当我在空闲状态下测试我的程序(我使用Eclipse)时,它会困扰我。我想在空闲时阻止Maya命令,只在Maya上启用。有没有办法确定它是在Maya上运行还是空闲?我所做的只是将我的导入包装在尝试中。块除外: try: from maya import cmds except ImportError: print 'Not Maya' 我的期望是,此代码在Maya之外有价值,但对于需

我一直在用PyQt为Maya制作工具。因此,它必须执行Maya命令。这意味着程序将导入Maya库。当我在空闲状态下测试我的程序(我使用Eclipse)时,它会困扰我。我想在空闲时阻止Maya命令,只在Maya上启用。有没有办法确定它是在Maya上运行还是空闲?

我所做的只是将我的
导入
包装在
尝试中。
块除外:

try:
    from maya import cmds
except ImportError:
    print 'Not Maya'

我的期望是,此代码在Maya之外有价值,但对于需要Maya api的函数则没有价值。

mhlester答案中的导入检查不会适用于所有可能的设置-如果您在Eclipse中使用MayaPy.exe解释器,则导入Maya.cmds将为您提供一个空模块,而不会引发导入错误(如果启动maya.standalone,则会替换空模块,否则它们仍然存在,不会触发导入错误)

您可以通过查找模块内的实际命令来了解这一点:

try:
    import maya.cmds as cmds
    cmds.about()
except  AttributeError:
    print "not Maya"  # cmds.about doesn't exist
except ImportError:
    print "not Maya"  # Maya modules not on the path

是否可以将使用Maya命令的部分放在“尝试除外”块中?如果Maya命令失败,则表明您没有在Maya中运行,然后可以运行不同的代码。