首页 > 解决方案 > 如何告诉 setuptools 软件包应该安装在特定于平台的目录中(例如 /usr/lib64)?

问题描述

我正在尝试更改“大型”C++ 软件项目的 Python 绑定(即绑定是次要部分)的交付方式,以便绑定不再作为裸露的、无元数据的.so文件安装在site-packages. 绑定的.so文件已经构建为软件的 cmake 指令的其余部分的一部分,我正在添加指令和正确的模块结构(即<module>/__init__.py),以便 setuptools 可以负责安装步骤。在setup.py中,我将预建.so文件包含为package_data,正如相关问题Distributing pre-built libraries with python modules中所做的那样。当cmake && make && make install开始调用python setup.py buildand时python setup.py install --root=${CMAKE_INSTALL_PREFIX},技术上一切正常。万岁。

问题是,即使我在包数据中包含了为 64 位架构构建的二进制文件,也会python setup.py install ...删除所有内容。{PREFIX}/usr/lib/pythonN.M/site-packages我正在努力弄清楚如何让 setuptools 很好地安装到,例如对于 Linux /usr/lib64,. 我可能会添加一些 cmake 逻辑来弄清楚 libdir 应该是什么并将其传递--install-libsetup.py install- 特定并相应地设置安装位置。

我认为这主要是因为我将绑定作为包数据包含在内,而不是将它们作为扩展模块构建在安装脚本中。有没有办法告诉 setuptools 一个没有明确 ext_modules 的包是特定于平台的,以便python setup.py install将文件放在下面/usr/lib64/...而不是/usr/lib/...?

标签: pythonsetuptools

解决方案


推荐阅读