Я работал над своим скриптом Auto-Rig и заметил, что код становится длинным, что затрудняет чтение и сосредоточение внимания на одной части. Я искал импорт файла python и вызывал функции внутри импортированного файла python. Не могу найти способ импортировать файл, может кто-нибудь помочь мне с этим.
импортировать python в pymel
Ответы (2)
Я рекомендую вам создать модуль Python с вашим файлом Python, а затем сделать это из файла MEL:
python "import my_python_module";
string $pycommand = "my_python_module.my_function(param1, "+ $mel_string_param1 +",\"" + $mel_string_param2 + "\")";
string $result= `python $pycommand`;
Запишите функции, которые вы хотите включить в свой модуль, в виде файла Python. (совет: не начинайте имя файла Python с цифр).
В моем примере myModule.py
содержит:
def myFunc1():
print 'myFunc1 is called'
pass
def myFunc2():
print 'myFunc2 is called'
return
Теперь сохраните файл в папке. Мой пример пути к файлу Python:
d:\projects\python\myModule.py
Теперь в редакторе сценариев сеанса Maya введите:
import sys
import os
modulePath = os.path.realpath(r'd:\projects\python\myModule.py')
moduleName = 'myModule'
if modulePath not in sys.path:
sys.path.append(modulePath)
try:
reload(moduleName)
except:
exec('import %s' % moduleName)
Ваш модуль должен быть импортирован.
Теперь позвоните myFunc1()
из myModule
:
myModule.myFunc1()
Это даст результат:
myFunc1 is called
Теперь вызываем myFunc2()
из myModule
:
myModule.myFunc2()
Это даст результат:
myFunc2 is called
Если мы сейчас обновим наш myModule.py
новой функцией:
def myFunc3():
print 'myFunc3 is called'
return
Нам нужно только запустить тот же код выше, чтобы перезагрузить обновленный модуль.
Теперь мы можем попробовать утверждение:
myModule.myFunc3()
... и получить этот вывод:
myFunc3 is called
import thefile
. Используйте функции, вызывающиеthefile.afunction()
- person joaquin   schedule 05.03.2013