【发布时间】:2012-11-06 03:51:07
【问题描述】:
我知道这是一个很长的尝试,但我希望这里有人对此有任何经验,因为我在网上找不到任何提及它的内容。我有一个从 Autodesk Maya 导入模块的 python 脚本。这个 python 脚本是通过 mayapy.exe 而不是 python.exe 运行的,这让我很失望。我宁愿不必在我的脚本中包含一个 bat 文件,而是让用户设置 mayapy.exe 的位置以便使用它。我宁愿使用 py2exe 之类的东西以某种方式将 mayapy.exe 与我的脚本打包在一起。老实说,我有点迷失方向。
如果我在我的脚本上正常运行 py2exe,它的结果会给我错误,如预期的那样找不到 maya.cmds。有没有办法找到要包含的dll?我尝试在 mayapy.exe 上运行 Dependency walker,但我正在冒险进入新的领域。 Maya安装目录base.dll和python26.dll中只用到了2个dll,其余都是系统dll。如果有人尝试过任何这些,请分享,或者如果有人有任何建议或路径,我可以往下看,或者我可以访问的网站,我将非常感激。非常感谢!
附:如果它有帮助,这是 python 脚本导入:
try:
import maya.standalone
maya.standalone.initialize()
except:
pass
import maya.cmds as cmds
import maya.mel as mel
from time import time as tTime
from glob import iglob
from shutil import copy
from os.path import join
from PyQt4 import QtCore
from PyQt4 import QtGui
脚本的重点是创建一个 Maya 文件,在其中做一些事情,然后保存它。使用 maya 解释器 (mayapy.exe) 可以做到这一点,而无需打开 maya,这正是我想要的。
【问题讨论】:
-
如果可以包含 dll,它仍然依赖于所有 Maya 二进制文件。即便如此,它也启动了 Maya,但没有显示 Maya GUI(这就是初始化的作用)。这种依赖性表现为需要知道 Maya 在磁盘上的位置,从而使您回到批处理问题。但是,您可以这样做,只是您的安装程序需要找到 Maya 并写入信息以供 exe 读取。更大的问题可能是即使你使用 py2EXE,你也不能依赖 PyQT 的外部依赖。而且您可能需要 PyQT4 的商业版本。
-
不确定它是否会有很大用处,但我怀疑这是不可能的(或者没有大量工作......)。刚刚对 maya.cmds 进行了一些探索,这是一个裸 init.py 文件,因此 maya.cmds 通过调用 maya.standalone.initialize() 来填充,该调用引用了standalone.pyd该目录中的文件。我不知道究竟发生了什么发生了什么...但是,如果您转到 mayapy.exe 所在的 /bin 目录,您会找到一个映射出的 commandList 文件相关 .dll 的命令。 @joojaa 还指出了您会遇到的另一个问题..
-
哎呀,忘了提,\Python\lib\site-packages\maya\app 中的 commands.py,我相信这是 x-reffed 和使用该文件的方式。在这一点上我有点停止玩了:)