如何通过二进制可执行文件扩展python包?

2024-06-16 11:26:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的包几乎完全是用python编写的。但是,有些功能基于在python中使用^{}运行的可执行文件。如果我在本地设置包,我需要首先编译相应的C++项目(由CMAGE管理),并确保生成的二进制可执行文件是在bin文件夹中创建的。然后,我的python脚本可以调用这些实用程序

我的项目的文件夹结构类似于以下结构:

root-dir
- bin 
   - binary_tool1
   - binary_tool2
- cpp
   - CMakeLists.txt
   - tool1.cpp
   - tool2.cpp
- pgk-name
   - __init__.py
   - module1.py
   - module2.py
   - ...
LICENSE
README
setup.py

我现在考虑创建一个可分发的Python包,并通过PyPi/pip发布它。因此,我需要将C++项目的构建步骤包含到打包过程中。p>

到目前为止,我创建了python包(没有二进制“有效负载”),如this tutorial中所述。现在我想知道如何扩展包装过程,以便将C++二进制文件与包一起分发。

问题:

  • setuptools是为这样的用例设计的吗
  • 这种“混合”包方法是可行的还是二进制兼容性问题是可以预料的

我相信用C代码扩展纯python包的规范方法是创建“二进制扩展”(例如,使用distutils,或如here所述)。在这种情况下,功能由可执行文件提供,而不是由可包装的C/C++函数提供。我希望避免重新设计C++项目来创建二进制扩展。


Tags: 项目方法py功能文件夹可执行文件bin过程