CG系

【Maya】スクリプトの場所を自由に設定する【環境変数にパスを追加すればOK】

Mayaでスクリプトを入れるときは、C:\Users\{ユーザー名}\ドキュメント\maya\scriptsとかに入れればOKってのはわかるんだけど、この場所って自由に決められないの?

ネットから落としてきたスクリプトは、別のドライブで管理したいんですけど?

こんな悩みを解決します。

こんにちわ兼業クリエイターのみっつです。

今回は、Mayaの環境変数を編集し、スクリプトを入れる場所(スクリプトパス)を自由に決めていきたいと思います。

環境変数っていうのは、MAYA_SCRIPT_PATH とか PYTHONPATH みたいなやつです。

何となく見たことあるかもですが、ようはコイツにパスを追加していこう

ってのが今回のお話です。

このやり方を覚えておくと、D:\workみたいに、Mayaが決めた場所以外の場所にスクリプトを入れて管理することができます。

みっつ

環境変数の詳細については後述しますが、要はパスを登録しておく場所って理解でOKです。

Mayaの環境変数にパスを追加する方法3選

Mayaの環境変数にパスを追加する方法は、大きく分けて3つあります。

  1. Mayaを開いてスクリプトエディタで追加する
  2. Maya.envファイルを編集して追加する
  3. Windowsに環境変数を追加する

今回は上の2つ、スクリプトエディタを使う方法と、Maya.envを編集する方法を紹介します。

最低この2つが分かれば、作業する上では困らないです。

みっつ

Windowsに環境変数を追加する方法は、ちょっと怖いんで私はあんまりやらないです。

興味ある人は自分で調べてやって下さい。

スクリプトエディタを使って環境変数にスクリプトパスを追加する

■今回使う環境変数

  • MAYA_SCRIPT_PATH ← MEL用
  • PYTHONPATH ← Python用

MAYA_SCRIPT_PATH がMELスクリプトを読み込む用で、PYTHONPATH がPythonスクリプトを読み込む用の環境変数です。

Mayaが用意してる環境変数はたくさんありますが、スクリプトを使うだけなら、とりあえずこの2つを理解すればOKです。

MAYA_SCRIPT_PATH と PYTHONPATHにスクリプトパスを追加する【MELの場合】

// MELでの書き方

putenv "MAYA_SCRIPT_PATH" "設定したいパス"; //MELのスクリプトパスを設定
putenv "PYTHONPATH" "設定したいパス"; //Pythonのスクリプトパスを設定

// 例
// putenv "MAYA_SCRIPT_PATH" "C:/work/___test";

MELで環境変数にスクリプトパスを追加する書き方は↑のとおりです。

パスの追加を確認するには、getenvコマンドを使います。

getenv "MAYA_SCRIPT_PATH";//パスを確認

getenvコマンドの引数に、確認したい環境変数を渡して実行してみましょう。

上手くいけば、先程追加したパスが表示されてるハズです。

MAYA_SCRIPT_PATH と PYTHONPATHにスクリプトパスを追加する【Pythonの場合】

# Pythonで登録する場合
import sys
from maya import cmds as cmds
from maya import mel as mm

mm.eval("putenv \\"MAYA_SCRIPT_PATH\\" \\"C:/work/___test/mel_b\\";") # /MELのスクリプトパスを設定
sys.path.append("設定したいパス") # Pythonのスクリプトパスを設定

Pythonでは書く場合は、↑の通りです。


ちなみに、、、

from maya import cmds as cmds
from maya import mel as mm

mm.eval("putenv \\"PYTHON_PATH\\" \\"C:/work/___test/mel_b\\";")

Pythonのスクリプトパスはputenvコマンドを使い、↑の書き方でも設定できますが、エスケープ云々が絡んでくるので、ちょっと複雑です。

なので、私はsys.path.appendで書くのををおすすめします。シンプルなんでね。

まぁ結果は同じなので、好きな方でやってください。

スクリプトエディタで設定する欠点【毎回追加しないとダメ】

上記のようにスクリプトエディタから、簡単にスクリプトパスを追加できます。

ですがこの方法は、一時期的にパスを追加してるだけなので、Mayaを閉じたら追加したパスの設定は失われます。

なので、Mayaを開くたびに毎回↑のコマンドを実行しないといけないです。

え、毎回このコマンドを実行しないといけないの?

いちいちコマンドなんて覚えてられないし、毎回実行って、普通に面倒なんですけど??

っていう、私のような面倒くさがり屋 効率的に仕事をしたい人のために、Maya.envファイルから追加する方法を紹介します。

Maya.envを編集して環境変数にスクリプトパスを追加する

Maya.envを編集してスクリプトパスを追加すれば、Mayaちゃんは永続的にそのパスを記憶してくれます。

■Maya.envファイルの場所

C:\Users\{ユーザー名}\Documents\maya\{バージョン名}\Maya.env

何か特別なプラグインとかを入れてない限り、Maya.envの中には何も書かれてないと思います(多分…)

【Maya.envの書き方①】フルパスで設定する

MAYA_SCRIPT_PATH=C:/work/___test

1つのパスを追加する場合は、『設定したい環境変数=フルパス』と書きます。

↑の例ではMAYA_SCRIPT_PATHに対して、1つのパスを追加してます。

【Maya.envの書き方②】複数のパスを追加する場合はセミコロンで区切る

PYTHONPATH=C:/work/___test;C:/work/___test001

複数のパスを追加したい場合は、パスとパスの間をセミコロンで区切ります。

↑の例では、PYTHONPATHに対して、2つのパスを追加してます。

【Maya.envの書き方③】パスを変数に代入して追加する

TEST_PATH=C:/work/___test
TEST_AAA_PATH=C:/work/___test/AAA

MAYA_SCRIPT_PATH=%TEST_PATH%;%TEST_AAA_PATH%

環境変数に追加したいパスがたくさんある場合は、変数に入れて書くこともできます。

変数名=パスで変数に代入して、環境変数に追加する際は%変数名%って感じで書きます。

↑の3つの書き方を1つのMaya.envファイルに書くと、、、

TEST_PATH=C:/work/___test
TEST_AAA_PATH=C:/work/___test/AAA

MAYA_SCRIPT_PATH=C:/work/___test/BBB
PYTHONPATH=C:/work/___test;C:/work/___test001;%TEST_AAA_PATH%

みたいな感じになりますね。

Maya.envファイルを編集し終わったら、保存して終了です。

みっつ

Maya.envファイルの書き方はバッチファイルとほぼ同じなので、書き方分かんねーってなったらバッチファイルの書き方を参考にして下さい。

スクリプトパスが追加されてるかを確認

import os
from maya import cmds as cmds

list = ["MAYA_SCRIPT_PATH","PYTHONPATH"]
for i in list:
    paths = os.environ[i]
    for path in paths.split(";"):
        print(f"{i} is {path}")

念のため、Maya.envファイルに書いたパスが追加されてるか確認してみましょう。

Mayaを起動して、↑のスクリプトを実行してください。MAYA_SCRIPT_PATHとPYTHONPATHに登録されてるパスが表示されるはずです。

画像のようにたくさんのパスが表示されますが、Maya.envに書いたパスは上の方に表示されてるはずです。

もしMaya.envに書いたパスが表示されてなければ、書き方がミスってるかもしれないので、今一度確認してみてください。

【Maya.envを書く際の注意点】=(イコール)の両辺に空白を入れてはダメ!

MAYA_SCRIPT_PATH = C:/work/___test

私、昔 ↑ こんな感じで、環境変数とパスの間のイコールの両辺に、空白を入れて書いてたんですよね。

そしたら全然スクリプト読み込めなくてさ…

はぁ?って思って調べてたら、どうやら空白はダメっぽいってのが分かりました。

Pythonのコーディング規約(PEP8)には、代入演算子(=のことです)の両辺は半角スペースを入れるのだー

って書いてあるくせに、なんでこれはアカンねん!って憤りを感じましたね。

• 次の2項演算子は、両側に常にひとつだけスペースを入れましょう: 代入演算子 (=), 拡張代入演算子 (+=-= など.), 比較演算子 (==<>!=<><=>=innot inisis not), ブール演算子 (andornot).

はじめに — pep8-ja 1.0 ドキュメント

Mayaの環境変数について軽く説明

ここまで頻繁に、環境変数、環境変数って言ってきましたが、

そもそも環境変数ってなによ?

っていう、数日前の私みたいな人に向けて、ざっくりと解説していきます。

【環境変数とは?】パスが登録されてる変数

冒頭でも書きましたが、環境変数とはパスが登録されてる変数です。

環境変数にパスを登録しておけば、Mayaとかのソフトを起動したときに、登録したパスを読みに行ってくれる。

っていうイメージでOKです。

厳密には違うかもですが、Mayaでスクリプトを使いたいんですってレベルなら、これくらいの理解で十分です。

Mayaの環境変数がデフォルトで登録してるスクリプトパス

  • C:\Users\{ユーザー名}\Documents\maya\scripts
  • C:\Users\{ユーザー名}\Documents\maya\{バージョン名}\scripts\scripts
  • C:\Users\{ユーザー名}\Documents\maya\{バージョン名}\ja_JP\scripts\scripts

上記のパスはMayaの環境変数である、MAYA_SCRIPT_PATHPYTHONPATHデフォルトで登録されてるスクリプトパスです。

デフォルトで登録されてる場所にスクリプトを配置しておけば、何もしなくてもスクリプトを読み込んでくれます。

なので、『Maya スクリプト 入れ方』とかで検索すると、だいたいの記事に↑の場所に置いてねーって書かれてると思います。

これを理解したら、環境変数に登録してない場所、(例えば、C:\Users\{ユーザー名}\Desktop とか)にスクリプトファイルを配置したら、エラーになる理由が分かりますよね。

なぜなら、環境変数に登録していない = Mayaは読み込んでくれてない

ってことだからです。

環境変数にスクリプトパスを追加する方法まとめ

スクリプトパスを追加する方法①スクリプトエディタを使う場合

// Melで登録する場合
putenv "MAYA_SCRIPT_PATH" "設定したいパス"; //MELスクリプトを登録
putenv "PYTHONPATH" "設定したいパス"; //Pythonスクリプトを登録
# Pythonで登録する場合
import sys
from maya import cmds as cmds
from maya import mel as mm

mm.eval("putenv \\"MAYA_SCRIPT_PATH\\" \\"C:/work/___test/mel_b\\";") # Melスクリプトを登録
sys.path.append("設定したいパス") # Pythonスクリプトを登録

スクリプトパスを追加する方法②Maya.envファイルを編集する場合

TEST_PATH=C:/work/___test
TEST_AAA_PATH=C:/work/___test/AAA

MAYA_SCRIPT_PATH=C:/work/___test/BBB
PYTHONPATH=C:/work/___test;C:/work/___test001;%TEST_AAA_PATH%

以上がMayaの環境変数にスクリプトパスを追加する方法です。

一時的にスクリプトパスを追加する場合は、スクリプトエディタから追加する。

永続的に別の場所をスクリプトパスとして登録する場合は、Maya.envから追加する。

みたいな感じで、状況に応じて使い分けてください。

これでスクリプトを自由な場所で管理できるようになりましたね!

それでは!!

ABOUT ME
みっつ
CGアニメーター/リガー テクニカルアーティスト(TA)目指して精進中です 都内でゲーム作ってます。