pybind11 icon indicating copy to clipboard operation
pybind11 copied to clipboard

[BUG]: Can't include 3rd shared libraries

Open thewh1teagle opened this issue 1 year ago • 1 comments

Required prerequisites

  • [X] Make sure you've read the documentation. Your issue may be addressed there.
  • [X] Search the issue tracker and Discussions to verify that this hasn't already been reported. +1 or comment there if it has.
  • [X] Consider asking first in the Gitter chat room or in a Discussion.

What version (or hash if on master) of pybind11 are you using?

2.13.5

Problem description

I'm using pybind11 in the project piper-phonemize-fork which has 2 shared libraries dependencies (onnxruntime and espeak-ng). I can't import the extension because it doesn't find the 2 shared libraries which I included in the package. Even when modifying LD_LIBRARY_PATH on Linux and or DYLD_LIBRARY_PATH on macOS or PATH on Windows. It just says that it can't find the extension but the issue is that the extension fail to load the shared libraries. It can import ONLY if the extension and the shared libraries are placed in the same folder, but for some reason the extension file is placed in site-pacakges rather than the package folder.

My suggestion:

  1. Provide a way to place the extension in the package folder rather than site-packages
  2. Provide a cross platform solution to include the shared libraries in the package and to be able to import the extension.
  3. Add documentation. I noticed at least 3 projects which I contributed to and the developers struggle with this exact issue.

People use auditwheel or delocate or cibuildwheel or delvewheel While these tools can sometimes simplify, I prefer not to use them in simple projects.

Reproducible example code

setup.py CMakeLists.txt

Is this a regression? Put the last known working version here if it is.

Not a regression

thewh1teagle avatar Sep 13 '24 14:09 thewh1teagle

This is not specific to pybind11. See https://pypackaging-native.github.io/ for discussions on this topic.

My project robotpy-build also packages things in such a way that they work on multiple platforms.

virtuald avatar Mar 04 '25 03:03 virtuald