![](/img/trans.png)
[英]Maya python UI - local variable not defined error when used inside button command within same function
[英]Function not defined when Importing Maya Python Script
我有一個用 python 編寫的工具,它在 Maya 腳本編輯器中運行時完全正常。 但是,我希望能夠從腳本目錄導入腳本。 這應該很簡單,我很震驚我在搜索網絡時找不到解決方案。
我的腳本格式就像這個例子:
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 按鈕時,它說功能未定義。 我不明白我錯過了什么? 如果加載了腳本,不應該定義函數嗎? 任何幫助將不勝感激,謝謝!
僅僅因為 GUI 加載並不意味着您的所有功能都正確加載。 您需要將文件 (module.py) 放在PYTHONPATH
可見的目錄中。 如果你在 Maya 中,你也可以把它放在MAYA_SCRIPT_PATH
PYTHONPATH
/ MAYA_SCRIPT_PATH
是您在啟動 Maya 之前設置的環境變量。 在默認的 Maya 安裝中,可以放置 module.py 文件的一些位置是:
(Windows) C:\\Users\\YOUR_USER_NAME\\Documents\\maya\\scripts
(Linux) ~/maya/scripts
(Mac) - 不確定,可能也放 ~/maya/scripts
如果你想知道你還能把它放在哪里,你可以運行這個
import os
print(os.getenv('MAYA_SCRIPT_PATH', ''))
print(os.getenv('PYTHONPATH', ''))
您有權寫入該列表中的任何位置都可以添加您的 module.py 文件。
此外,值得注意的是,在您的示例中 module.function() 會失敗。 它需要是 module.function1() 或 module.function2() 但我假設你知道這一點。 希望這有幫助
Sup 伙計們所以我知道這是一個已經得到回答的老問題,但我有一些額外的信息可以幫助解決 GUI 功能不起作用的問題。 (相同的錯誤)並且基本上沒有任何內容。
因此腳本主管僅在通過架子加載模塊時提供幫助,但仍會返回相同的錯誤“未定義功能”
這與如何通過 UI 元素調用函數有關。 例如。 這將允許您在腳本編輯器中調用函數,但在導入模塊時會出現函數未定義錯誤
def GUI_function():
pm.button( command = "function()")
def function():
do stuff
另一方面,這有效。
def GUI_function():
pm.button( command = function)
def function(*_):
do stuff
我不知道為什么,但 Maya 傾向於認為 function() 是一個節點類型,因此如果您不使用參數並且您很高興,請刪除括號
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.