首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义Maya中的__file__ (#NameError)

未定义Maya中的__file__ (#NameError)
EN

Stack Overflow用户
提问于 2020-03-29 18:41:34
回答 1查看 517关注 0票数 0

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

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

这是我的脚本:

代码语言:javascript
运行
复制
import os

print os.path.dirname(os.path.realpath(__file__)) + os.sep

这是我的脚本的路径: Y:\New folder\my_script.py

当我运行时:

代码语言:javascript
运行
复制
execfile("Y:\New folder\my_script.py")

我总是得到这样的错误:

代码语言:javascript
运行
复制
# NameError: name '__file__' is not defined #

为什么会发生这种情况?

EN

Stack Overflow用户

回答已采纳

发布于 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。通常如下所示:

代码语言:javascript
运行
复制
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,则可以导入它:

代码语言:javascript
运行
复制
import my_script

现在,您的__file__变量将按预期工作。

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

代码语言:javascript
运行
复制
reload(my_script)
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60913021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档