python - 如何告诉 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 build
and时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-lib
给setup.py install
- 特定并相应地设置安装位置。
我认为这主要是因为我将绑定作为包数据包含在内,而不是将它们作为扩展模块构建在安装脚本中。有没有办法告诉 setuptools 一个没有明确 ext_modules 的包是特定于平台的,以便python setup.py install
将文件放在下面/usr/lib64/...
而不是/usr/lib/...
?
解决方案
推荐阅读
- netsuite - Freemarker / Netsuite - 将变量分配给特定的项目数量
- python - 如何使用 Python、Selenium 和 BeautifulSoup 将 html 保存到文本文件
- sql - SQL如何从连接表中的多个值中进行选择
- java - 运行由 jetty, jackson 实现的服务器时遇到的错误
- python - 在pyspark数据框中执行动态条件
- algorithm - 必须通过某个节点的路径的图形查找算法?
- c++ - How to use aggregated initialization in derived class with CRTP pattern?
- c# - 多重绑定时的随机 DependencyProperty.UnsetValue
- textbox - 在 Visual Basic 6 中调用带有数字变化的 Texbox 的名称
- arrays - 使用 Powershell 从 Arraylist 中拉出成员