解决办法:一切都正确,Python3执行PyImport_Import()一直返回NULL

简介: 解决办法:一切都正确,Python3执行PyImport_Import()一直返回NULL

之前使用的是Python2.7,功能正常.结果到了Python3.5,执行就返回空.这是怎么回事?以下条件都符合.


执行目录有文件.

PyCharm可以正常执行.

命令行下python3也可以正常执行.

那么还有什么可能出错?

 在网上一通搜索,也没找到解决办法.后来看到有人不同的写法,试了一下,终于找到了正确结果.这里分享给大家:


int main(int argc, char** argv)
{
    Py_Initialize();
    init_numpy();
    if ( !Py_IsInitialized() )  
    {  
        return -1;
    }
    //导入当前路径
    PyRun_SimpleString("import  sys");
    PyRun_SimpleString("sys.path.append('./')");
    PyRun_SimpleString("print(sys.path)");
#if PYTHON2_7
    PyObject* m_pPythonName   = PyString_FromString(pPythonPath);
    if (m_pPythonName == NULL)
    {
        GH_LOG_INFO("PyBytes_FromString() error!");
        return  -1;
    }
    m_pPythonModule = PyImport_Import(m_pPythonName);
#else
    m_pPythonModule = PyImport_Import(PyUnicode_FromString(pPythonPath));
#endif
    if (!m_pPythonModule)
    {
       GH_LOG_INFO("PyImport_Import() error!");
       return  -1;
    }
    m_pPythonDict = PyModule_GetDict(m_pPythonModule);
    ......
}
目录
相关文章
|
7月前
|
SQL 关系型数据库 MySQL
python在mysql中插入或者更新null空值
这段代码是Python操作MySQL数据库的示例。它执行SQL查询从表`a_kuakao_school`中选取`id`,`university_id`和`grade`,当`university_id`大于0时按升序排列。然后遍历结果,根据`row[4]`的值决定`grade`是否为`NULL`。若不为空,`grade`被格式化为字符串;否则,设为`NULL`。接着构造UPDATE语句更新`university`表中对应`id`的`grade`值,并提交事务。重要的是,字符串`NULL`不应加引号,否则更新会失败。
172 2
|
4月前
|
存储 Python
Python中的null是什么?
Python中的null是什么?
|
4月前
|
C++ Python
【Azure 应用服务】Azure Function Python函数部署到Azure后遇见 Value cannot be null. (Parameter 'receiverConnectionString') 错误
【Azure 应用服务】Azure Function Python函数部署到Azure后遇见 Value cannot be null. (Parameter 'receiverConnectionString') 错误
|
存储 网络协议 Java
SpringBoot在自定义实现类中调用service层等Spring其他层报错为null的解决办法
SpringBoot在自定义实现类中调用service层等Spring其他层报错为null的解决办法
652 0
JSONObject自动隐藏为null的属性的解决办法
JSONObject自动隐藏为null的属性的解决办法
256 0
解决办法一:GetProcAddress函数返回值总为NULL
解决办法一:GetProcAddress函数返回值总为NULL
254 0
错误解决办法:‘NULL’ was not declared in this scope
错误解决办法:‘NULL’ was not declared in this scope
266 0
env->FindClass()为NULL的一种解决办法
env->FindClass()为NULL的一种解决办法
170 0
|
7月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 IS NULL
【8月更文挑战第12天】
680 0
在 MySQL 中使用 IS NULL