__file__ 在 Maya 中未定义(#NameError)
__file__ in Maya not defined(#NameError)
这似乎是一个被问到很多的问题,但到目前为止我还没有找到有效的答案。
我正在使用 Maya 2020 并尝试制作一个需要使用一些相对和绝对路径的脚本。
这是我的脚本:
import os
print os.path.dirname(os.path.realpath(__file__)) + os.sep
这是我的脚本的路径:
Y:\New folder\my_script.py
当我运行:
execfile("Y:\New folder\my_script.py")
我总是得到错误:
# NameError: name '__file__' is not defined #
为什么会这样?
首先,execfile
是Python3中的弃用函数,最好避免使用。他们建议改用 exec(open(fn).read())
(实际上,这就是它在幕后的工作方式)。如果您查看建议的替换,您会明白为什么未定义 __file__
(它不是文件,而是解释为 Python 代码的文本)。
在 Maya 中导入文件的常用方法是将它们放置在添加到 PYTHONPATH
的目录中。用户的文档中有一个默认的 Maya 脚本目录。根据您的平台和 Maya 版本,这可能是:C:\Users\<your_user>\Documents\maya20\scripts
另一种选择是将您的目录添加到 PATH
。通常这看起来像这样:
import sys
MY_SCRIPT_PATH = "/Some/path/with/my/scripts"
if MY_SCRIPT_PATH not in sys.path:
sys.path.append(MY_SCRIPT_PATH
然后如果您的脚本文件名为 my_script.py
您可以导入它:
import my_script
现在您的 __file__
变量将按预期工作。
P.S。如果您更改文件并想重新加载:
reload(my_script)
这似乎是一个被问到很多的问题,但到目前为止我还没有找到有效的答案。
我正在使用 Maya 2020 并尝试制作一个需要使用一些相对和绝对路径的脚本。
这是我的脚本:
import os
print os.path.dirname(os.path.realpath(__file__)) + os.sep
这是我的脚本的路径: Y:\New folder\my_script.py
当我运行:
execfile("Y:\New folder\my_script.py")
我总是得到错误:
# NameError: name '__file__' is not defined #
为什么会这样?
首先,execfile
是Python3中的弃用函数,最好避免使用。他们建议改用 exec(open(fn).read())
(实际上,这就是它在幕后的工作方式)。如果您查看建议的替换,您会明白为什么未定义 __file__
(它不是文件,而是解释为 Python 代码的文本)。
在 Maya 中导入文件的常用方法是将它们放置在添加到 PYTHONPATH
的目录中。用户的文档中有一个默认的 Maya 脚本目录。根据您的平台和 Maya 版本,这可能是:C:\Users\<your_user>\Documents\maya20\scripts
另一种选择是将您的目录添加到 PATH
。通常这看起来像这样:
import sys
MY_SCRIPT_PATH = "/Some/path/with/my/scripts"
if MY_SCRIPT_PATH not in sys.path:
sys.path.append(MY_SCRIPT_PATH
然后如果您的脚本文件名为 my_script.py
您可以导入它:
import my_script
现在您的 __file__
变量将按预期工作。
P.S。如果您更改文件并想重新加载:
reload(my_script)