Прежде всего, 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)