corre maya desde la concha de python

Así que tengo cientos de archivos maya que deben ejecutarse con un script. Así que pensé, ¿por qué tengo que molestarme en abrir maya? Debería poder hacerlo desde la shell de python (no la shell de python en maya, la shell de python en las ventanas)

Así que la idea es:

fileList = ["....my huge list of files...."] for f in fileList: openMaya runMyAwesomeScript 

Encontré esto:

 C:\Program Files\Autodesk\Maya201x\bin\mayapy.exe maya.standalone.initialize() 

Y parece que se carga algo, porque puedo ver mis scripts cargando desde rutas personalizadas. Sin embargo, no hace que el maya.exe se ejecute.

Cualquier ayuda es bienvenida ya que nunca hice este tipo de cosas externas.

PS usando maya 2015 y python 2.7.3

Estás en el camino correcto. Maya.standalone ejecuta Maya.standalone sin Maya.standalone y sin interfaz Maya.standalone de Maya, por lo que es ideal para realizar lotes, pero es esencialmente una aplicación de línea de comandos. Además de carecer de GUI, es lo mismo que una sesión regular, por lo que tendrá la misma ruta de acceso de python y

Querrá diseñar el proceso por lotes para que no necesite ninguna interacción de la interfaz de usuario (por ejemplo, asegúrese de guardar o exportar cosas de una manera que no arroje diálogos al usuario).

Si solo quieres un maya de línea de comandos, esto te permitirá ejecutar una sesión interactivamente:

 mayapy.exe -i -c "import maya.standalone; maya.standalone.initialize()" 

Si tiene una secuencia de comandos para ejecutar en su lugar, incluya la import maya.standalone y maya.standalone.initialize() en la parte superior y luego el trabajo que desee realizar. Luego ejecútalo desde la línea de comandos así:

 mayapy.exe "path/to/script.py" 

Presumiblemente, querría incluir una lista de archivos para procesar en ese script y hacer que los mastique uno por uno. Algo como esto:

 import maya.standalone maya.standalone.initialize() import maya.cmds as cmds import traceback files = ['path/to/file1.ma'. '/path/to/file2.ma'.....] succeeded, failed = {} for eachfile in files: cmds.file(eachfile, open=True, force=True) try: # real work goes here, this is dummy cmds.polyCube() cmds.file(save=True) succeeded[eachfile] = True except: failed[eachfile] = traceback.format_exc() print "Processed %i files" % len(files) print "succeeded:" for item in succeeded: print "\t", item print "failed:" for item, reason in failed.items(): print "\t", item print "\t", reason 

que debería hacer alguna operación en un montón de archivos e informar cuáles son exitosos y cuáles fallan por qué motivo