У меня возникла проблема (я считаю) получить модуль для перезагрузки после того, как он впервые запущен в Maya 2015 на OSX 10.10. Он работает после перезапуска приложения, но мне нужно его обновлять каждый раз, когда скрипт выполняется. Вот код:Как получить python для перезагрузки этого модуля в Maya 2015? Конструктор работает только в первый раз
import os
try:
riggingToolRoot = os.environ["RIGGING_TOOL_ROOT"]
except:
print "RIGGING_TOOL_ROOT environment variable not correctly configured"
else:
import sys
print riggingToolRoot
path = riggingToolRoot + "/Modules"
if not path in sys.path:
sys.path.append(path)
import System.blueprint_UI as blueprint_UI
reload(blueprint_UI)
UI = blueprint_UI.Blueprint_UI()
В конструкторе Blueprint_UI существует в настоящее время только оператор печати, и это работает только первый раз, когда скрипт запускается после того, как Майя был перезапущен. Кажется, что перезагрузка не работает по какой-то причине? Первый раз выход:
/Users/eric/Documents/Projects/RiggingTool
We are in the constructor
С этого момента на каждом выполнении только дает следующее, пока я не бросил Майю и рестарт:
/Users/eric/Documents/Projects/RiggingTool
Я попытался с помощью:
import sys
sys.dont_write_bytecode = True
, чтобы узнать, использует ли он .pyc-файлы, но это не имеет никакого значения. Благодарю.
В общем, вы должны думать о отделять код, который устанавливает свои пути и местоположение модуля от фактического кода выполнения: вы хотите вещи ломаются, когда окружающая среда не настроена правильно, так что вы можете обнаружить неправильно установленные вверх машины и исправить их - иначе вы получите тот же вид прерывистого сбоя, который вы видите здесь. – theodox
Большое спасибо! Это имеет смысл, и я вижу это сейчас. Ваше решение отлично работает. – isticism