如何在不使用 ctype Linux 的情况下将 so 文件作为模块导入?

How can I import so file as a module without using ctype Linux?

文件夹/home/cyan/TEMP

下的文件结构
test.py
  
lib
 |--libc_test_module.so
 
c_test_module.cc
 
CMakeLists.txt

test.py

import sys
sys.path.append("/home/cyan/TEMP/lib") 
import c_test_module

c_test_module.cc

#include <Python.h>

int c_test_function(int a) {
    return a + 1;
}

static PyObject * _c_test_function(PyObject *self, PyObject *args)
{
    int _a;
    int res;

    if (!PyArg_ParseTuple(args, "i", &_a))
        return NULL;
    res = c_test_function(_a);
    return PyLong_FromLong(res);
}


/*  define functions in module */
static PyMethodDef TestMethods[] =
{
     {"c_test_function", _c_test_function, METH_VARARGS,
         "this is a c_test_function"},
     {NULL, NULL, 0, NULL}
};


static struct PyModuleDef c_test_module = {
    PyModuleDef_HEAD_INIT,
    "c_test_module", "Some documentation",
    -1,
    TestMethods
};
PyMODINIT_FUNC PyInit_c_test_module(void) {
    PyObject *module;
    module = PyModule_Create(&c_test_module);
    if(module==NULL) return NULL;
    /* IMPORTANT: this must be called */
    import_array();
    if (PyErr_Occurred()) return NULL;
    return module;
}

错误

ModuleNotFoundError: No module named 'c_test_module'

问题

我不想使用 ctype 模块导入 .so 文件。相反,我想知道是否有办法直接将此文件作为模块导入。

我创建了一个 setup.py 文件:

from distutils.core import setup, Extension
import numpy

def main():
    setup(name="c_test_module",
          version="1.0.0",
          description="Python interface for the c_test_module C library function",
          author="cyan",
          author_email="xxx@gmail.com",
          ext_modules=[Extension("c_test_module", ["c_test_module.cc"],
                                include_dirs=[numpy.get_include()])],
    )

if __name__ == "__main__":
    main()

现在可以导入 c_test_module 并调用函数了。