Python __Maya中的文件未定义(#名称错误)

Python __Maya中的文件未定义(#名称错误),python,maya,Python,Maya,这似乎是一个被问了很多的问题,但到目前为止,我还没有找到一个有效的答案 我正在Maya 2020中工作,并尝试制作一个需要使用一些相对和绝对路径的脚本 这是我的剧本: import os print os.path.dirname(os.path.realpath(__file__)) + os.sep 这是我的脚本的路径: Y:\New folder\my\u script.py 当我跑步时: execfile("Y:\New folder\my_script.py") 我总是会出错:

这似乎是一个被问了很多的问题,但到目前为止,我还没有找到一个有效的答案

我正在Maya 2020中工作,并尝试制作一个需要使用一些相对和绝对路径的脚本

这是我的剧本:

import os

print os.path.dirname(os.path.realpath(__file__)) + os.sep
这是我的脚本的路径: Y:\New folder\my\u script.py

当我跑步时:

execfile("Y:\New folder\my_script.py")
我总是会出错:

# NameError: name '__file__' is not defined #

为什么会发生这种情况?

首先,
execfile
在Python 3中是一个不推荐使用的函数,最好避免使用它。他们建议改用
exec(open(fn).read())
(事实上,这就是它在引擎盖下的工作原理)。如果您查看建议的替换,您将了解为什么没有定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
(它不是一个文件,而是一个被解释为Python代码的文本)

在Maya中导入文件的常用方法是将文件放置在添加到
PYTHONPATH
的目录中。用户文档中有默认的Maya脚本目录。根据您的平台和Maya版本,这可能是:
C:\Users\\Documents\Maya\2020\scripts
另一个选项是将目录添加到
路径
。通常看起来是这样的:

导入系统 MY_SCRIPT_PATH=“/Some/PATH/with/MY/scripts” 如果我的脚本路径不在sys.PATH中: sys.path.append(我的脚本路径 然后,如果脚本文件名为
my_script.py
,则可以导入它:

导入我的脚本
现在,您的
\uuuu文件\uuuu
变量将按预期工作

注意:如果您更改了文件并希望重新加载:

重新加载(我的脚本)

首先,
execfile
在Python3中是一个不推荐使用的函数,最好不要使用它。他们建议使用
exec(open(fn).read())
(事实上,这就是它在引擎盖下的工作方式)。如果你看一下建议的替换,你就会明白为什么没有定义
\uuuuuuuuuu文件(它不是一个文件,而是一个被解释为Python代码的文本)

在Maya中导入文件的常用方法是将它们放置在添加到
PYTHONPATH
的目录中。用户文档中有默认的Maya脚本目录。根据您的平台和Maya版本,这可能是:
C:\Users\\Documents\Maya\2020\scripts
另一个选项是将目录添加到
路径
。通常如下所示:

导入系统 MY_SCRIPT_PATH=“/Some/PATH/with/MY/scripts” 如果我的脚本路径不在sys.PATH中: sys.path.append(我的脚本路径
然后,如果脚本文件名为
my_script.py
,则可以导入它:

导入我的脚本
现在,您的
\uuuu文件\uuuu
变量将按预期工作

注意:如果您更改了文件并希望重新加载:

重新加载(我的脚本)

我不相信
execfile
会像正常导入那样创建一个模块,因为它缺少
\uuuuuuuuuuuuuuuuuuuu
之类的项目。你需要使用
execfile
有什么特别的原因吗?我或多或少可以保证有更好的方法来完成你需要做的事情。我不相信
execfile
crea像正常导入一样对模块进行测试,因此缺少
\uuuuu file\uuuuuu
等项。您需要使用
execfile
有什么特别的原因吗?我或多或少可以保证有更好的方法来完成您需要做的事情。