首页 > 解决方案 > 在包含所有依赖项的 ac 程序中嵌入 python

问题描述

我正在编写 ac 应用程序,它可以让我在其中嵌入 python 模块。python模块负责通过rpyc库在远程机器上启动对python代码的远程过程调用。我的 python 模块将位于运行应用程序的同一位置。我假设我的 c 应用程序将在没有所需 python 库(例如 rpyc)的机器上运行。我想知道当我发布代码以进行分发时,是否有一种方法可以将所有依赖项与我的模块捆绑在一起。

我已经使用 cython 将 python 模块编译为 .pyd ,但这仍然需要安装所需的 python 库。

我的c代码;

int main(){
    int argc = 2;
    wchar_t* argv[] = { (wchar_t *)"mypythonmodule", (wchar_t *)"-h", NULL };
    const char *module = argv[0];
    PyObject *pName, *pModule, *pFunc;
    PyObject *pArgs, *pValue;
    Py_Initialize();
    pName = PyUnicode_DecodeFSDefault(module);
    pModule = PyImport_Import(pName);
    Py_DECREF(pName);
    if (pModule != NULL) {
        pArgs = PyTuple_New(argc);
        for (int i = 0; i < argc; i++) {
            pValue = PyUnicode_FromString(argv[i]);
            PyTuple_SetItem(pArgs, i, pValue);
        }
        pFunc = PyObject_GetAttrString(pModule, "parse_args");
        PyObject_CallObject(pFunc, pArgs);
        Py_DECREF(pFunc);
        Py_DECREF(pArgs);
        //Py_DECREF(pValue);
        Py_Finalize();
    }
}

标签: pythonc

解决方案


推荐阅读