Update __init__.py
This commit is contained in:
@@ -28,32 +28,55 @@ def _ensure_studiolibrary_loaded():
|
|||||||
if _studiolibrary_module is not None:
|
if _studiolibrary_module is not None:
|
||||||
return _studiolibrary_module
|
return _studiolibrary_module
|
||||||
|
|
||||||
# Add all necessary paths
|
# Add all necessary paths in correct order
|
||||||
_inner_studiolibrary = os.path.join(_current_dir, 'studiolibrary')
|
_inner_studiolibrary = os.path.join(_current_dir, 'studiolibrary')
|
||||||
for _subdir in ['studiolibrarymaya', 'mutils', 'studioqt', 'studiovendor']:
|
|
||||||
_subdir_path = os.path.join(_current_dir, _subdir)
|
|
||||||
if _subdir_path not in sys.path:
|
|
||||||
sys.path.insert(0, _subdir_path)
|
|
||||||
|
|
||||||
# Import from inner studiolibrary by temporarily manipulating sys.path
|
# Add the parent directory so packages can be imported correctly
|
||||||
# Remove current directory to avoid circular import
|
# e.g., "import studioqt" will find studiolibrary/studioqt/
|
||||||
_saved_path = sys.path[:]
|
if _current_dir not in sys.path:
|
||||||
if _current_dir in sys.path:
|
sys.path.insert(0, _current_dir)
|
||||||
sys.path.remove(_current_dir)
|
|
||||||
|
|
||||||
# Add inner studiolibrary to the front
|
# Also add inner studiolibrary for direct imports
|
||||||
if _inner_studiolibrary not in sys.path:
|
if _inner_studiolibrary not in sys.path:
|
||||||
sys.path.insert(0, _inner_studiolibrary)
|
sys.path.insert(0, _inner_studiolibrary)
|
||||||
|
|
||||||
|
# Load main.py directly to get the main function
|
||||||
|
_main_module = None
|
||||||
|
_load_error = None
|
||||||
|
|
||||||
|
# Try Python 3.4+ first
|
||||||
try:
|
try:
|
||||||
import studiolibrary
|
import importlib.util
|
||||||
_studiolibrary_module = studiolibrary
|
spec = importlib.util.spec_from_file_location(
|
||||||
finally:
|
"studiolibrary_main",
|
||||||
# Restore sys.path
|
os.path.join(_inner_studiolibrary, "main.py")
|
||||||
sys.path = _saved_path
|
)
|
||||||
# But keep the inner studiolibrary path
|
_main_module = importlib.util.module_from_spec(spec)
|
||||||
if _inner_studiolibrary not in sys.path:
|
sys.modules["studiolibrary_main"] = _main_module
|
||||||
sys.path.insert(0, _inner_studiolibrary)
|
spec.loader.exec_module(_main_module)
|
||||||
|
except Exception as e:
|
||||||
|
_load_error = e
|
||||||
|
# Try Python 2.7 fallback
|
||||||
|
try:
|
||||||
|
import imp
|
||||||
|
_main_module = imp.load_source(
|
||||||
|
"studiolibrary_main",
|
||||||
|
os.path.join(_inner_studiolibrary, "main.py")
|
||||||
|
)
|
||||||
|
except Exception as e2:
|
||||||
|
# If both fail, raise the original error
|
||||||
|
raise _load_error if _load_error else e2
|
||||||
|
|
||||||
|
# Create a simple module object with main function
|
||||||
|
class StudioLibraryModule:
|
||||||
|
def __init__(self):
|
||||||
|
self.main = _main_module.main
|
||||||
|
self.__version__ = "2.20.2"
|
||||||
|
|
||||||
|
def version(self):
|
||||||
|
return self.__version__
|
||||||
|
|
||||||
|
_studiolibrary_module = StudioLibraryModule()
|
||||||
|
|
||||||
return _studiolibrary_module
|
return _studiolibrary_module
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user