PyImport_Import 无法导入包含导入的模块

PyImport_Import fails to import module that contains imports

我正在开发一个 c++ 项目,该项目需要 python 库 (scipy.stats) 中包含的一些功能。 我创建了使用 libray 的 python 脚本,我的想法是将数据从 C++ 传递到 python 脚本,调用函数并从 python 获取 return 值. 但是当我执行 PyImport_Import(pName) 时,它 return 为空,因为模块以导入开头。如果我使用另一个不以导入开头的脚本,它就可以正常工作。 我做错了什么?

chi2.py:

from scipy.stats import chi2, chi2_contingency


def chi2Test(alpha):
# contingency table
    table = [   [2556, 9327, 1028, 564],
                [770,  2991,  322, 164],
                [433, 1566, 182, 97]
                ]
    stat, p, dof, expected = chi2_contingency(table)
    # interpret p-value
    if p <= alpha:
        return False
    else:
        return True

(table只是占位符,以后会变成参数)

main.cpp:

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <chrono>
#include <random>
#include <windows.h>
#include <string>
#include <iostream>
#include "pyhelper.hpp"

int main() {

    CPyInstance hInstance;

    CPyObject pName = PyUnicode_FromString("chi2");
    CPyObject pModule = PyImport_Import(pName);

    if (pModule)
    {
        CPyObject pFunc = PyObject_GetAttrString(pModule, "chi2Test");
        if (pFunc && PyCallable_Check(pFunc))
        {
            CPyObject pArgs = PyTuple_New(0);
            CPyObject pArg = PyFloat_FromDouble(0.5);
            PyTuple_SetItem(pArgs, 0, pArg);

            CPyObject pValue = PyObject_CallObject(pFunc, pArgs);

            bool res = PyObject_IsTrue(pValue);
        }
        else
        {
            printf("ERROR: function getInteger()\n");
        }

    }
    else
    {
        printf_s("ERROR: Module not imported\n");
    }

    return 0;
}

CPyInstance 和 CPyObject 是 2 类 定义如下:https://www.codeproject.com/Articles/820116/Embedding-Python-program-in-a-C-Cplusplus-code

感谢任何可以提供帮助或有建议的人。 (这是我第一次使用嵌入了 python 的 C++)

我找到了解决方案。发生这种情况是因为缺少 numpy 和 scipy 的调试符号。在发布模式下设置visual studio解决了问题