Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到python控制盘中分发的共享库 我有一个Python模块,它包含一个C++扩展,以及一个C++扩展依赖的共享库。共享库由setuptools作为扩展上的额外对象拾取。运行python setup.py bdist_wheel后,正确生成的模块wheel对象具有如下目录结构: +-pymodule.whl | +-pymodule | +-pymodule-version.dist-info | +-extension.so | +-shared_lib.so_Python_C++_Shared Libraries_Setuptools_Python Extensions - Fatal编程技术网

未找到python控制盘中分发的共享库 我有一个Python模块,它包含一个C++扩展,以及一个C++扩展依赖的共享库。共享库由setuptools作为扩展上的额外对象拾取。运行python setup.py bdist_wheel后,正确生成的模块wheel对象具有如下目录结构: +-pymodule.whl | +-pymodule | +-pymodule-version.dist-info | +-extension.so | +-shared_lib.so

未找到python控制盘中分发的共享库 我有一个Python模块,它包含一个C++扩展,以及一个C++扩展依赖的共享库。共享库由setuptools作为扩展上的额外对象拾取。运行python setup.py bdist_wheel后,正确生成的模块wheel对象具有如下目录结构: +-pymodule.whl | +-pymodule | +-pymodule-version.dist-info | +-extension.so | +-shared_lib.so,python,c++,shared-libraries,setuptools,python-extensions,Python,C++,Shared Libraries,Setuptools,Python Extensions,要安装这个控制盘,我在python环境中调用pip install pymodule.whl,它将python源代码和.so文件复制到环境的站点包目录中 安装模块后,可以通过在环境终端中调用import pymodule尝试导入模块。这将触发要引发的异常: ImportError: shared_lib.so: cannot open shared object file: No such file or directory 可以通过将适当的站点包目录附加到LD_LIBRARY_PATH变量来

要安装这个控制盘,我在python环境中调用
pip install pymodule.whl
,它将python源代码和.so文件复制到环境的
站点包
目录中

安装模块后,可以通过在环境终端中调用
import pymodule
尝试导入模块。这将触发要引发的异常:

ImportError: shared_lib.so: cannot open shared object file: No such file or directory
可以通过将适当的
站点包
目录附加到
LD_LIBRARY_PATH
变量来解决此异常;然而,这似乎应该是开箱即用的,特别是考虑到python显然能够定位
扩展

是否有一种方法可以强制python定位此共享库,而不必显式地将
LD_library\u路径
指向安装位置(即
站点包


通过使用包数据并显式指定共享库的安装位置,问题解决了类似的问题。这种方法的问题是共享对象与扩展分离。在我的例子中,共享库和扩展都是由同一个cmake构建构建的目标。我以前曾尝试使用
skbuild
构建基于cmake的扩展;但是,根据,skbuild中存在类似的问题,包括作为扩展构建一部分生成的其他库。

可能与@hoefling重复,我在您共享的链接中看到了解决方案;然而,该解决方案实际上关注的是第三方共享库,它不是作为扩展构建的一部分生成的。它可以解决同样的问题;但是,该对象随后与扩展定义本身分离,我不确定是否可以保证只有在扩展完成构建后,它才会收集此包数据。我有完全相同的问题,这尤其令人沮丧,因为使用python setup.py安装创建一个egg是现成的。