将Python 代码打包成.so文件

要将Python 代码打包成 .so 文件,通常使用 Cython 工具,通过编写一个 setup.py 文件来指定需要编译的Python 文件,然后在命令行中使用 python setup.py build_ext --inplace 命令来编译。编译完成后,即可像普通模块一样在Python 中导入并使用生成的 .so 文件。

Python 把C语言的程序编译成.so动态文件并且在Python程序中引用so动态函数– 凌顺实验室

具体步骤:

  1. 安装Cython

如果尚未安装Cython,请先安装它:

pip install cython

根据您的操作系统,可能还需要安装C 语言编译器,例如在Linux 上使用 gccpython-devel。

  1. 编写Python 源文件

创建您需要打包的Python 文件,例如 hello.py。

  1. 创建 setup.py 文件

在与Python 源文件相同的目录下,创建一个名为 setup.py 的文件。文件内容如下:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize(["hello.py"]) # 替换为您的 Python 文件名
)
  • cythonize 函数用于指定需要编译的 .py 文件。
  • 如果需要编译多个文件,可以将它们放入列表。
  1. 执行编译命令

打开终端,进入 setup.py 文件所在的目录,然后执行以下命令:

python setup.py build_ext --inplace
  • build_ext 子命令会执行编译过程。
  • --inplace 参数可以将生成的 .so 文件直接放在当前目录,方便使用。
  1. 调用 .so 文件

编译成功后,您就可以在您的Python 项目中像导入普通模块一样导入并使用这个 .so 文件。例如,如果您的文件是 hello.py 编译成的 hello.so,可以这样调用:

from hello import greet # 假设 hello.py 中有一个 greet 函数
greet("World")

注意事项:

  • 编译后的 .so 文件通常用于在其他环境中(例如C/C++ 或其他Python 脚本)重用代码,并且可以起到保护源代码的作用。
  • .so 文件是Linux/macOS 系统下的动态链接库,相当于Windows 平台下的DLL 文件。