Skip to content

Installing pythonocc-core alongside other C++ extensions bpy causes DLL load failures on Windows #1458

Description

@PaulZemke

Hi everyone,

I have already raised this issue within the BPY community.
https://projects.blender.org/blender/blender/issues/148944#issuecomment-1752928

What is happening is:

1 - blender ships with OpenEXR 3.3.5 as per the VFXPlatform
2 - import bpy loads all of blenders dependencies into memory, this includes the 3.3.5 copy of openexr.dll which is loaded out of [envroot]\Lib\site-packages\bpy\OpenEXR.dll
3 - import OCC.Core.IGESControl runs a long chain of imports that ends up trying to load freetype.dll from [envroot]\myenv\Lib\site-packages\OCC\Core\freetype.dll which is linked against openexr 3.2.x
4 - Freetype.dll needs the following symbol ?readMemoryMapped@IStream@Imf_3_2@@UEAAPEADH@Z
5 - This symbol does not exist in openexr.dll in 3.3.5
6 - This leads to a OS loader error where it refuses to load freetype.dll due to the missing import
7- this error ruins the load of the package and python ends up giving the following error ImportError: DLL load failed while importing _IGESControl: The specified procedure could not be found.

These two packages are just inherently binary incompatible and the core reason things like the VFX platform exist.

Image Steps to reproduce: Create a clean Python environment (e.g. Conda or venv) Install both packages: python>=3.11,<3.12.a0 conda install -c conda-forge pythonocc-core=7.9.0 pip install bpy==4.4.0

Therefore my Question: is there a possibilty to build pythonocc-core based on OpenEXR 3.3.5 ?
If that's possible, how can i do this with conda or what have i to change before starting the build and compile process.

Hence my question: Is there a way to build pythonocc-core based on the newer version OpenEXR 3.3.5?
If so, how can I do this with conda, or what do I need to change before starting the build and compilation process?

I would greatly appreciate any ideas or comments on this issue.

Best regards Paul

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions