相关疑难解决方法(0)

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

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

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

root_dir
- bin 
   - binary_tool1
   - binary_tool2
- cpp
   - CMakeLists.txt
   - tool1.cpp
   - tool2.cpp
- pkg_name
   - __init__.py
   - module1.py
   - module2.py
   - ...
LICENSE
README
setup.py
Run Code Online (Sandbox Code Playgroud)

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

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

问题:

  • setuptools专为这样的用例而设计的吗?
  • 这种“混合”包方法是否可行,或者是否会出现二进制兼容性问题?

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

python distutils setuptools pypi

11
推荐指数
1
解决办法
1321
查看次数

标签 统计

distutils ×1

pypi ×1

python ×1

setuptools ×1