サンプルの.melファイルと.pyファイルはこんな感じのこんにちは表示。
hello.mel
global proc printHello() /**************************************************************************//** テスト ******************************************************************************/ { print("Hello MEL\n"); }
hello.py
def printHello(): '''テスト ''' print "Hello Python"
こいつらをスクリプトエディタで呼び出します。
まずはMELの場合。
source "hello.mel"; printHello();
こんな感じで、関数を実行する前にスクリプトを読み直すことでデバックがはかどります。これと同じようなことをPythonでやりたいわけです。
ちなみに source すると指定したスクリプトファイルを強制的にコンパイルするのでファイル名と同じ名前のグローバルプロシージャでなくても呼び出すことができます。
pythonのドキュメントを読んでみると、import したモジュールを reload すれば良いみたいです。
import hello.py reload(hello) hello.printHello()
これで同じ事ができるはずです。
が、
ドーンだYO!!
# Error: Syntax Error: file<maya console> line 2: None-ASCII character~
上のスクリプトだとドキュメントに日本語を使っているから、そこで止まります。
まぁ削除すればよいんですけど、日本語も使えないこんな世の中じゃ・・・python。
でファイルの先頭にこんな魔法のコメントを入れるのです。
# coding: cp932
cp932(Code Page932)というのは shift-jis のことで、こうすると今度はmacとかで停止するはずです。mac持ってないから知らんけど。
utf-8を指定すれば、windowsでもmacでもエラーは無くなると思いますが __doc__したときにwindowsで文字化けするわけです。
こういう部分もmayaでpythonを使いたくない理由だったりするのですが、PEP8ではコーディング指定のマジックコメントが非推奨だったりしているわけです。
はやく3系がまともに動くようなバージョンアップをしてくれれば良いんですがね。
0 件のコメント:
コメントを投稿