Maya 2026导入自定义Python库调用函数报错NameError求助
问题原因分析
1. 函数未处于模块顶层命名空间
检查test_lib.py的代码结构:如果my_func被嵌套在其他函数、类或代码块内部(比如下面的错误写法),它就不属于模块的顶层命名空间,无法通过test_lib.my_func访问:
def wrapper_func(): def my_func(): print("hello world!")
正确写法应该是将my_func放在模块顶层:
def my_func(): print("hello world!")
2. 导入了同名的其他模块
Maya的Python搜索路径中可能存在另一个test_lib模块,被优先导入。执行以下代码验证导入的模块路径:
import test_lib print(test_lib.__file__)
如果输出路径不是你指定的C:\Users\user1\Documents\maya\scripts\test_lib.py,说明加载了其他位置的同名模块。
3. 模块缓存未更新
Maya的Python解释器会缓存已导入的模块,即使你修改了test_lib.py,旧版本的缓存仍会被使用。尝试强制重新加载模块:
import importlib import test_lib importlib.reload(test_lib) test_lib.my_func()
4. 模块存在语法/编码错误
如果test_lib.py有语法错误(比如缩进错误、中文引号、编码不兼容),Maya导入时会静默加载失败,导致顶层函数无法被识别。直接在脚本编辑器中运行test_lib.py的全部代码,检查是否有语法报错。
5. 调用方式错误
你是否直接执行了my_func()而非test_lib.my_func()?如果没有用模块名限定函数,Python会在当前全局命名空间查找,自然触发NameError。正确调用方式为:
import test_lib test_lib.my_func()
或者使用from test_lib import my_func后直接调用。
内容的提问来源于stack exchange,提问作者Ralf_Reddings
相关产品推荐
相关产品推荐

