__file__ в Maya не определен (#NameError) - PullRequest
0 голосов
/ 29 марта 2020

Это похоже на вопросы, которые часто задают, но до сих пор я не нашел рабочего ответа.

Я работаю в 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 #

Почему это происходит?

1 Ответ

2 голосов
/ 31 марта 2020

Прежде всего, execfile является устаревшей функцией в Python 3, и ее лучше избегать. Вместо этого они предлагают использовать 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__ будет работать так, как ожидается .

PS Если вы изменили свой файл и хотите перезагрузить:

reload(my_script)
...