这似乎是一个经常被问到的问题,但到目前为止,我还没有找到一个有效的答案。
我在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 #
为什么会发生这种情况?
发布于 2020-03-31 17:52:24
首先,execfile
在Python3中是一个不推荐使用的函数,最好避免使用它。他们建议改用exec(open(fn).read())
(事实上,这就是它在幕后的工作方式)。如果您查看建议的替换,就会明白为什么没有定义__file__
(它不是一个文件,而是一个被解释为Python代码的文本)。
在Maya中导入文件的常用方法是将文件放置在添加到PYTHONPATH
的目录中。在用户的文档中有一个默认的Maya脚本目录。根据您的平台和Maya版本,这可能是:C:\Users\<your_user>\Documents\maya\2020\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__
变量将按预期工作。
附注:如果您更改了文件并希望重新加载:
reload(my_script)
https://stackoverflow.com/questions/60913021
复制相似问题