From 0741d0141edd738b068cbbd75d58cd6285680770 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 26 Feb 2025 15:19:23 +0100 Subject: [PATCH] Fix: Blender as Python Module shared library directory wrong This could affect for example the USD and MaterialX Python modules that are now bundled, and need appropriate paths to their libraries. Ref #134676 Pull Request: https://projects.blender.org/blender/blender/pulls/134937 --- scripts/site/sitecustomize.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/scripts/site/sitecustomize.py b/scripts/site/sitecustomize.py index 217b2192eae..df7fa5819b1 100644 --- a/scripts/site/sitecustomize.py +++ b/scripts/site/sitecustomize.py @@ -7,15 +7,25 @@ import sys import os -exe_dir, exe_file = os.path.split(sys.executable) -is_python = exe_file.startswith("python") - # Path to Blender shared libraries. shared_lib_dirname = "blender.shared" if sys.platform == "win32" else "lib" -if is_python: - shared_lib_dir = os.path.abspath(os.path.join(exe_dir, "..", "..", "..", shared_lib_dirname)) + +if os.path.basename(__file__) == "bpy_site_customize.py": + # Blender as Python Module. + is_python = True + shared_lib_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")) + # On Windows no subdirectory is used. + if sys.platform != "win32": + shared_lib_dir = os.path.join(shared_lib_dir, shared_lib_dirname) else: - shared_lib_dir = os.path.abspath(os.path.join(exe_dir, shared_lib_dirname)) + exe_dir, exe_file = os.path.split(sys.executable) + is_python = exe_file.startswith("python") + if is_python: + # Python executable bundled with Blender. + shared_lib_dir = os.path.abspath(os.path.join(exe_dir, "..", "..", "..", shared_lib_dirname)) + else: + # Blender executable. + shared_lib_dir = os.path.abspath(os.path.join(exe_dir, shared_lib_dirname)) if sys.platform == "win32": # Directory for extensions to find DLLs.