* Veuillez faire attention à l'article
Ici, c'est le contenu de l'enquête pour savoir "comment ça fonctionne réellement" pour les fonctions et opérations qui sont utilisées comme d'habitude.
En connaissant le mécanisme, nous en saisirons les avantages et les inconvénients, éviterons les problèmes qui se produiront à l'avenir et le développerons en une méthode d'utilisation étendue.
Ce n'est qu'un mémo de l'enquête personnelle. Veuillez noter qu'il peut y avoir des erreurs et des malentendus.
Récemment (à partir de juin 2020), il y a eu des rapports de virus pour maya. Je pense que de nombreuses personnes ont été touchées. Tous ces éléments suivent finalement le comportement de l'application via le fichier de données. Le script qui s'exécute au démarrage est userSetup.py. Et userSetup.py est utilisé comme méthode de paramétrage normal de l'environnement personnel / de production, même s'il ne s'agit pas d'une histoire de virus.
Jusqu'à présent, je me suis souvent concentré sur le côté qui l'utilise comme opération générale, donc Comme c'est un gros problème, j'ai décidé d'étudier le fonctionnement de userSetup.py.
J'avais l'habitude de penser que c'était une boîte noire "en quelque sorte", mais c'est un mécanisme très simple.
sys.userSetup sous le dossier de chemin.J'exécute py avec un execfile.
est. C'est tout.
Le fichier .py correspondant se trouve ci-dessous.
C:\Program Files\Autodesk\Maya2008\Python\Lib\site-packages\maya\app\startup\basic.py
~
C:\Program Files\Autodesk\Maya2020\Python\Lib\site-packages\maya\app\startup\basic.py
Si vous extrayez les pièces nécessaires, ce sera comme suit.
basic.py
def setupScriptPaths():
# ....réduction....
# Per-version prefs scripts dir (eg .../maya8.5/prefs/scripts)
prefsDir = cmds.internalVar( userPrefDir=True )
sys.path.append( os.path.join( prefsDir, 'scripts' ) )
# Per-version scripts dir (eg .../maya8.5/scripts)
scriptDir = cmds.internalVar( userScriptDir=True )
sys.path.append( os.path.dirname(scriptDir) )
# User application dir (eg .../maya/scripts)
appDir = cmds.internalVar( userAppDir=True )
sys.path.append( os.path.join( appDir, 'scripts' ) )
def executeUserSetup():
# ....réduction....
try:
for path in sys.path:
scriptPath = os.path.join( path, 'userSetup.py' )
if os.path.isfile( scriptPath ):
import __main__
execfile( scriptPath, __main__.__dict__ )
except Exception, e:
sys.stderr.write( "Failed to execute userSetup.py\n" )
sys.stderr.write( str( e ) )
Ces fonctions sont appelées et exécutées depuis basic.py (dans les versions récentes batch.py gui.py).
basic.py
# ....réduction....
# Set up sys.path to include Maya-specific user script directories.
setupScriptPaths()
if not os.environ.has_key('MAYA_SKIP_USERSETUP_PY'):
# Run the user's userSetup.py if it exists
executeUserSetup()
Les détails dépendent de votre environnement, mais les dossiers sont à peu près les suivants.
1. 1. Dossier de script du chemin du module (pluriel)
2. dossier (s) de base basé sur python de maya
3. 3. Dossier de script d'environnement utilisateur (pluriel)
J'ai vérifié les éléments suivants dans mon environnement Maya 2018. (Hors spéciaux)
sys.code de confirmation de chemin
import sys
for path in sys.path:
if not path:
continue
print (i)
Exemple d'exécution
C:\Program Files\Autodesk\Maya2018\plug-ins\ATF\scripts
C:\Program Files\Autodesk\Maya2018\plug-ins\MASH\scripts
C:\Program Files\Autodesk\Maya2018\plug-ins\fbx\scripts
C:\Program Files\Autodesk\Maya2018\plug-ins\camd\scripts
C:\solidangle\mtoadeploy\2018\scripts
C:\Program Files\Autodesk\Maya2018\plug-ins\substance\scripts
C:\Program Files\Autodesk\Maya2018\plug-ins\xgen\scripts
C:\Program Files\Autodesk\Maya2018\bin\python27.zip
C:\Program Files\Autodesk\Maya2018\Python\DLLs
C:\Program Files\Autodesk\Maya2018\Python\lib
C:\Program Files\Autodesk\Maya2018\Python\lib\plat-win
C:\Program Files\Autodesk\Maya2018\Python\lib\lib-tk
C:\Program Files\Autodesk\Maya2018\bin
C:\Program Files\Autodesk\Maya2018\Python
C:\Program Files\Autodesk\Maya2018\Python\lib\site-packages
C:\Program Files\Autodesk\Maya2018\bin\python27.zip\lib-tk
C:/Users/rdj/Documents/maya/2018/prefs/scripts
C:/Users/rdj/Documents/maya/2018/scripts
C:/Users/rdj/Documents/maya/scripts
Il semble que vous deviez prêter attention aux points suivants.
1.userSetup.L'ordre d'exécution de py est sys.dans l'ordre des chemins
2.Documents/maya/userSetup dans le dossier utilisateur comme les scripts.py n'est pas un traitement spécial
Jusqu'au dernier système.userSetup au chemin.Courir aux côtés des autres comme l'un des py
3. 3. Un script python s'exécute dans execfile
Le mécanisme est ouvert au public pour les pièces bonnes et problématiques, ce qui est incroyable. .. ..
Recommended Posts