Vous lisez
Maya : Développer ses outils Python dans un fichier externe

Objectif

Nous allons mettre en place ici une technique permettant d’importer et exécuter des scripts développés dans un espace disque perso complètement indépendant de Maya. Attention toute fois, cette technique n’est pas des plus propres dans un contexte de production ! En effet, le fait d’ajouter des chemins au sys.path pourrait vite vous compliquer la vie en terme de propreté d’organisation, de stabilité et de pérennité de vos développements.Il en est de même pour le reload() que je vais utiliser ci-dessous, il ne devrait vous servir qu’uniquement dans un contexte de debug.

Structure des dossiers et fichiers

Répertoire de base: /u/touti/maya/scripts/custom

../custom

    __init__.py

    myTool

        myTool.py

        __init__.py

Avec: Dossiers & Fichiers

Important: Les fichiers __init__.py sont vides mais indispensables pour que votre répertoire soit considéré par Python comme un module.

Dans le fichier .py

Votre module est donc le fichier myTool.py.
A l’intérieur de celui-ci, nous avons (pour notre exemple):
1
2
3
4
5
# Classe à appeler
class myTool_exec(object):
    # Fonction execute à l'appel de la classe
    def __init__(self):
        print "Yeah ça marche !"

Dans Maya

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Import de la librairie sys
import sys
# Définition du chemin des scripts
pathCustom = '/u/touti/maya/scripts/custom'
# Si le chemin n'est pas déjà configuré
if not pathCustom in sys.path:
    # On l'ajoute
    sys.path.append(pathCustom)
# Import du module et définition d'un nom d'appel
import myTool.myTool as myTool
# Refresh du module
reload(myTool)
# Exec de la classe myTool_exec()
myTool.myTool_exec()

Qu'avez-vous pensé de cet article ?
J'aime
0%
Merci
0%
Pratique
0%
Incomplet
0%
Rien de neuf
0%
A propos de l'auteur
Olivier Schmitt
Photographe professionnel, originaire d'Alsace (France), ancien Directeur Technique sur les films d'animation "Minions", "Moi, Moche et Méchant" et "Le Lorax".
Commentaires
Laisser une réponse

Laisser une réponse