diff --git a/python/MaterialX/__init__.py b/python/MaterialX/__init__.py index bd3999fe36..609e42eae6 100644 --- a/python/MaterialX/__init__.py +++ b/python/MaterialX/__init__.py @@ -1,3 +1,24 @@ +# Python 3.8+ on Windows: DLL search paths for dependent +# shared libraries +# Refs.: +# - https://github.com/python/cpython/issues/80266 +# - https://docs.python.org/3.8/library/os.html#os.add_dll_directory +import os +import sys +if sys.platform == "win32" and sys.version_info >= (3, 8): + import importlib.metadata + try: + importlib.metadata.version('MaterialX') + except importlib.metadata.PackageNotFoundError: + # On a non-pip installation, this file is in %INSTALLDIR%\python\MaterialX + # We need to add %INSTALLDIR%\bin to the DLL path. + mxdir = os.path.dirname(__file__) + pydir = os.path.split(mxdir)[0] + installdir = os.path.split(pydir)[0] + bindir = os.path.join(installdir, "bin") + if os.path.exists(bindir): + os.add_dll_directory(bindir) + from .main import * from .colorspace import *