Dorian Fevrier's blog - Mot-clé - moduleJe m’appelle FEVRIER Dorian, je suis infographiste 3D passionné par mon métier, l’informatique en général, l’internet, la programmation et l’évolution de tout ce petit monde. Vous trouverez sur ce blog des tutoriaux, mes coups de cœurs, avis, etc.2024-01-02T23:48:05+01:00FEVRIER Dorianurn:md5:695d9c73474c33ce3dab043823509c4bDotclearSupprimer (pour recharger) les modules python dans Mayaurn:md5:ce10c9d0d982ce61a44b5356cab258cb2010-09-18T16:50:00+02:002014-02-17T05:43:26+01:00NarannScript et codefrmayamodulepythonscript<p><img src="https://www.fevrierdorian.com/blog/public/logos/Python_logo_150.png" alt="Python_logo_150.png" style="float:left; margin: 0 1em 1em 0;" title="Python_logo_150.png, mar. 2009" height="150" width="150" />Lorsqu'on fait du développement Python dans Maya, on peut des fois être embêté avec ses modules persos Python. :pasClasse:</p>
<p>En effet, si on souhaite recharger un module, ce n'est pas super simple. En mel il suffit de redéfinir la procédure et c'est bon. En python ce n'est pas le cas.</p>
<p>Je vous propose ici un bout de code qui va décharger des modules de votre choix de Maya. Si vous réappelez ses modules, ils seront rechargés. :hehe:</p> <h5>Le bout de code</h5>
<p>Si vous faite un "module" (Un dossier "monModule" avec un fichier <strong>init</strong>.py monModule), que vous faite plusieurs modules qui communiquent entre eux, Maya "stocke" ses modules en mémoire. Pour les "supprimer" de la mémoire Maya (et donc les décharger), vous pouvez utiliser ce code:</p>
<pre class="python python"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">sorted</span><span style="color: black;">(</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">modules</span>.<span style="color: black;">keys</span><span style="color: black;">(</span><span style="color: black;">)</span><span style="color: black;">)</span>:
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #483d8b;">'monModule'</span> <span style="color: #ff7700;font-weight:bold;">in</span> item :
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'delete '</span> + <span style="color: #008000;">str</span><span style="color: black;">(</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">modules</span><span style="color: black;">[</span>item<span style="color: black;">]</span><span style="color: black;">)</span>
<span style="color: #ff7700;font-weight:bold;">del</span><span style="color: black;">(</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">modules</span><span style="color: black;">[</span>item<span style="color: black;">]</span><span style="color: black;">)</span></pre>
<p>En effet:</p>
<pre class="python python"><span style="color: #dc143c;">sys</span>.<span style="color: black;">modules</span>.<span style="color: black;">keys</span><span style="color: black;">(</span><span style="color: black;">)</span></pre>
<p>Liste tout les modules chargé par Python.</p>
<p>Si vous le faite seul, vous verrez qu'il y en a un certain nombre. :seSentCon:</p>
<p>L'objectif n'est pas de tous les supprimer bien entendu. C'est à ça que sert le:</p>
<pre class="python python"><span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #483d8b;">'monModule'</span> <span style="color: #ff7700;font-weight:bold;">in</span> item :</pre>
<p>Si en plus tout vos scripts Python commencent par une syntax particulière ("fd" dans le cas de modules appelés "fdMyLibs", "fdGetVertex", fdSwitchConnections" pas exemple), il suffit de faire:</p>
<pre class="python python"><span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #483d8b;">'fd'</span> <span style="color: #ff7700;font-weight:bold;">in</span> item :</pre>
<p>Et voila le travail! :youplaBoum:</p>
<h5>Petites subtilités</h5>
<p>Python créés un fichier .pyc à coté des fichiers Python qui est en fait une version "compilé" de votre code (Byte Code), pour accélérer le chargement des modules.</p>
<p>Normalement, ses fichiers sont mis à jour une fois que le .py est changé. Mais il arrive que ce ne soit pas le cas. Il peut donc arriver d'avoir à supprimer ses fichier directement pour laisser à Maya le soin de les régénérer. :sourit:</p>
<h5>Conclusion</h5>
<p>En espérant que ce petit astuce vous servira.</p>
<p>A bientôt!</p>
<p>Dorian</p>
<center><i>:marioCours:</i></center>