我的项目回复了一个SO文件,我将通过安装在项目文件夹下的cmake
来使它生效。当我运行python setup.py install
时它会起作用。
但是我通过pip安装它,因为pip会将项目复制到一个tmpfile中,安装后将被删除,并且SO文件也被删除。因此,当我导入项目时,由于找不到SO文件而失败。
当然,我可以将SO文件安装到/usr/local/lib
,但我不想
有人想解决吗?
答案 0 :(得分:1)
如果您有轮子包装,也可以看看auditwheel。
auditwheel repair
:将这些外部共享库复制到转盘本身,并自动修改适当的RPATH条目,以便在运行时提取这些库。就像在不更改构建系统的情况下静态链接库一样,这可以实现类似的结果。建议打包人员,像静态链接一样,捆绑可能会涉及版权问题。
答案 1 :(得分:0)
您需要在运行时使共享库可发现。规则适用于常规C ++可执行文件。
这里有几个选项(列表可能不完整):
/usr/lib/
)一起放置/etc/ld.so.conf.d/my_lib.conf
LD_LIBRARY_PATH
LD_PRELOAD
运行python解释器RPATH
属性。 我个人use是后一种选择:它允许我自由使用virtualenv