如何最好地将C++/Cython项目编译成可执行文件

How to best compile C++/Cython project into an executable?

本文关键字:项目 编译 可执行文件 Cython 何最好 C++      更新时间:2023-10-16

我有一个项目,里面有一堆C++和Python/Cython文件。到目前为止,我主要开发了C++部分,并使用 qmake 将其编译为静态库。一些方法使用 boost::p ython 公开,并从.py文件执行。

我现在想将整个事情编译成一个独立的可执行文件。

我现在的问题是:最好的方法是什么?我尝试切换到Cython,编译python文件并链接库。但是似乎没有直接的方法使用distutils/setup.py编译可执行文件,只有共享库。

有没有办法轻松地将.cpp和.pyx文件一次编译成可执行文件

这样我就可以摆脱很多 boost::p ython 包装器的东西并获得 c++/python 的整洁组合,而无需导入共享库并使用 pyinstaller 打包整个东西?

你应该看看:

  • 适用于 Windows/Linux 的 pyinstaller(或 py2exe)
  • 适用于 OSX 的 py2app

由于 python 是您的入口点,因此您将能够将独立的解释器、环境和资源位置捆绑到应用程序/exe/二进制文件中。它会将您的所有库模块收集到其独立的站点包中

如果您不使用任何普通的纯 py 文件并且只有 cython 文件,那么也可以将解释器嵌入到其中一个文件中作为入口点,并在 cython 中使用 --embed 标志:http://wiki.cython.org/EmbeddingCython请注意,这是一种类似于前面提到的打包选项的"冻结"方法,但并没有花费额外的时间来构建一个独立的环境。