簡體   English   中英

導入 Maya Python 腳本時未定義函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM