2017-08-21 9 views
0

Mayaスクリプトエディタで実行しているときに完全に正常に動作するPythonで書いたツールがあります。しかし、私はスクリプトディレクトリからスクリプトをインポートできるようにしたい。どちらがシンプルで、私はショックを受けています。ウェブを検索しているときに解決策を見つけることができません。Maya Pythonスクリプトのインポート時に関数が定義されていません

マイスクリプト形式は、この例のようなものです:

import maya.cmds as cmds 

# GUI code with buttons, they call the functions below. 
# 
# 
def function1(): 
    #commands that do things 

def function2(): 
    #commands that do things 

#List of functions continues 

私が言ったように、プログラムの機能は完全にスクリプトエディタで実行した場合。ディレクトリにスクリプトを保存し、この方法を使用する場合:

import module 
reload (module) 
module.function() 

GUI負荷を罰金が、その後、GUIのボタンを押したときに、それは関数が定義されていないと言います。私は何が欠けているのか分からないのですか?スクリプトがロードされた場合、関数を定義すべきではありませんか?どんな助けでも大歓迎です、ありがとう!

+0

実際のコードは何ですか? – andy

+0

書かれているように、あなたは 'function1()'や 'function2()'ではなく 'function()'を呼んでいます。 – theodox

答えて

0

GUIが読み込まれても、すべての関数が正しくロードされたわけではありません。ファイル(module.py)はPYTHONPATHに見えるディレクトリに置く必要があります。 Mayaを使用している場合は、MAYA_SCRIPT_PATH

PYTHONPATH/MAYA_SCRIPT_PATHは、Mayaを起動する前に設定した環境変数です。デフォルトのMayaのインストールでは、あなたのmodule.pyファイルを置くことができるいくつかの場所は次のようになります。

(Windowsの場合)C:\ Users \ユーザーYOUR_USER_NAMEドキュメント\ \マヤスクリプト\

(Linux)の〜/マヤ/スクリプト

(マック) - わからない、おそらく〜/マヤ/スクリプトを置く

あなたがそれを置くことができる他にどこかを知りたい場合は、あなたがこれを実行する

import os 
print(os.getenv('MAYA_SCRIPT_PATH', '')) 
print(os.getenv('PYTHONPATH', '')) 

書き込み権限があるリスト内の任意の場所で、module.pyファイルを追加できます。

また、あなたの例では、module.function()が失敗することに注意してください。それはmodule.function1()またはmodule.function2()である必要がありますが、あなたはそれを知っていると思います。これがうまくいきたいです

関連する問題