2010-05-31 15 views
0

J'essaie de comprendre comment utiliser Python dans Maya. Je voulais créer une étagère dans Maya et quand je clique sur cette étagère, elle va exécuter un fichier contenant du code python. Première chose, j'ai compris que nous ne pouvons pas simplement source script Python. J'ai suivi le tutoriel this, alors maintenant j'ai une fonction psource(). Dans mon étagère, je peux simplement appeler psource("myPythonScript")Comment faire pour exécuter automatiquement le script python lorsque Maya a d'abord chargé

Mon problème est que je dois en quelque sorte enregistrer psource() lorsque Maya d'abord chargé.

Une idée de comment faire cela?

Répondre

-2

J'aime utiliser

exec (open ('c: \ quelle que soit \ quelle que soit \ scriptname.py'))

voir si cela fonctionne pour vous! :)

+0

peut-être vous avez downvoted parce que cela ouvre une menace de sécurité? il serait bien que les downvoters prennent 20 secondes pour écrire quelque chose ... –

+0

Cela ne répond tout simplement pas à la question, donc c'est en downvoted. Il peut exécuter un script, mais cela ne facilite pas l'exécution d'un script python lors du chargement de Maya. –

0

Quelle version de Maya utilisez-vous? Si plus tard que 8.5, Maya a python intégré. Tous les scripts python que vous mettez dans votre répertoire de script Maya local sont automatiquement source. Vous pouvez à l'intérieur de la source de l'éditeur de script et exécuter des scripts Python.

Pour exécuter automatiquement:

  1. Créer un fichier userSetup.mel dans mydocs \ MAYA \ mayaVersion \ scripts
  2. A l'intérieur du usersetup, utilisez cette syntaxe pour importer et exécuter des scripts:
python("from package import module"); 
python("module.method(\"passedVar1\", \"passedVar2\")"); 

Espérons que cela aide

PS La même syntaxe s'applique aux boutons d'étagère. Assurez-vous juste que votre chemin python est défini pour Maya afin que votre code puisse être trouvé. Le répertoire de script local est déjà inclus ...

+0

Maya supporte maintenant un 'userSetup.py' qui est mutuellement exclusif à' userSetup.mel'. Vous pouvez remplacer le mel par py et les utiliser comme commandes python natives. – jdi

2

Je vous suggère d'importer le module Python avec votre bouton avant d'appeler la fonction. En supposant que votre script est MAYA/scripts/tep.py, votre bouton serait procédez comme suit:

import tep 
tep.psource() 

Si vous voulez modifier le script et continuer à courir la nouvelle version chaque fois que vous appuyez sur le bouton, faites ceci:

import tep 
reload(tep) 
tep.psource() 

et si vous voulez que votre module pour charger au démarrage Maya, créez un fichier appelé userSetup.py dans votre MAYA/scripts et l'ont faire:

import tep 

Ensuite, votre bouton peut simp ly juste:

tep.psource() 

Ou ...

reload(tep) 
tep.psource() 
2

Dans le cadre de la séquence de démarrage Maya, il va exécuter un fichier appelé userSetup.py pour vous. Dans ce fichier, vous pouvez coller dans le code python standard pour configurer votre environnement, etc.

docs: http://download.autodesk.com/global/docs/maya2013/en_us/index.html?url=files/Python_Python_in_Maya.htm,topicNumber=d30e725143

C'est le Docco 2013, mais il est valable en 2011 et 2012 aussi. Je pense qu'il est bon de revenir plus aussi bien, mais je ne suis pas en cours d'exécution quoi que ce soit ici plus

Pour un exemple BTW, mon fichier userSetup.py ressemble à ceci:

import sys 

# import a separate pyscript dir - we keep the standard scriptdir for MEL 
sys.path.append(r'C:/Users/tanantish/Documents/maya/2012-x64/pyscripts') 

# odds on i'm going to want PyMEL loaded by default 
# and we are going to try distinguish it from the old maya.cmds 
# since the two since they're similar, but not the same. 
# from pymel.core import * 
import pymel.core as pm 

# and we might as well get maya.cmds in for testing.. 
import maya.cmds as mc 

# import local toolpack 
import tantools 

(modifié à chapeaux out userSetup.py comme commentaire de @ jdi)

+0

Oups. Mon mauvais .. @sfjedi fondamentalement expliqué ceci - je balayais et n'a pas vu le usersetup.py dans la réponse .. – tanantish

+0

Il doit être 'userSetup.py'. Les bouchons comptent. – jdi