c++加载python模块,但是PyImport_ImportModule老返回NULL
2016-08-26 19:07
519 查看
问题描述:
调用 PyImport_ImportModule加载python老是返回NULL,如下所示:“没有找到符号”
但是我检查了程序所在的路径啊,有这个jieba-test.py,但是就是返回NULL。
解决办法:
如果你是使用这个语句PyRun_SimpleString(“sys.path.append(‘./’)”);
指定的路径,请确保你程序的工作路径下有你想加载的模块。
请注意是:
程序的工作路径(尤其重要)
程序工作路径在哪里?
例子:
1、如果你是打开命令行,所在的目录是”C:\Users\Administrator” ,然后输入了“D:\jieba-test.py”执行,此时你的工作路径是在“C:\Users\Administrator”,不是“D:\”,“D:\”是脚本所在的路径。
如果你是鼠标双击运行.exe程序,那么.exe的工作路径就是.exe所在的目录,但是如果你的程序使用了类似:_chdir()这样的函数,它会改变程序的工作路径。
代码
是指加载程序当前工作路径,即你实际运行的时候程序的工作路径。
如果程序在PyRun_SimpleString(“sys.path.append(‘./’)”);之前改变了工作路径,而改变之后的工作路径下没有你想要加载的模块,那么就会出现上图的错误,返回一个NULL,提示“没有找到符号”。
但是按照上面说的意思,做了修改还是出现的上面“找不到符号”,这时最好使用命令行执行一下生成的程序(或者用鼠标点击运行),模拟一下程序实际的运行情况。查看一下是否运行正常。
调用 PyImport_ImportModule加载python老是返回NULL,如下所示:“没有找到符号”
但是我检查了程序所在的路径啊,有这个jieba-test.py,但是就是返回NULL。
解决办法:
如果你是使用这个语句PyRun_SimpleString(“sys.path.append(‘./’)”);
指定的路径,请确保你程序的工作路径下有你想加载的模块。
请注意是:
程序的工作路径(尤其重要)
程序工作路径在哪里?
例子:
1、如果你是打开命令行,所在的目录是”C:\Users\Administrator” ,然后输入了“D:\jieba-test.py”执行,此时你的工作路径是在“C:\Users\Administrator”,不是“D:\”,“D:\”是脚本所在的路径。
如果你是鼠标双击运行.exe程序,那么.exe的工作路径就是.exe所在的目录,但是如果你的程序使用了类似:_chdir()这样的函数,它会改变程序的工作路径。
代码
PyRun_SimpleString("sys.path.append('./')");
是指加载程序当前工作路径,即你实际运行的时候程序的工作路径。
如果程序在PyRun_SimpleString(“sys.path.append(‘./’)”);之前改变了工作路径,而改变之后的工作路径下没有你想要加载的模块,那么就会出现上图的错误,返回一个NULL,提示“没有找到符号”。
但是按照上面说的意思,做了修改还是出现的上面“找不到符号”,这时最好使用命令行执行一下生成的程序(或者用鼠标点击运行),模拟一下程序实际的运行情况。查看一下是否运行正常。
相关文章推荐
- c++加载python模块,但是PyImport_ImportModule老返回NULL
- c++加载python模块,但是PyImport_ImportModule老返回NULL
- python加载模块PyImport_ImportModule返回NULL
- 在C/C++中嵌入python, 用PyImport_ImportModule返回值总是为0的解决方法
- 解决方案:c调用python,PyImport_Import或者PyImport_ImportModule总是返回为空
- C++、python混合编程之加载模块
- C++开发python扩展模块:ImportError: dynamic module does not define init function (initRabbit)解决办法
- 简明python教程 --C++程序员的视角(三):模块
- python技巧31[Python 动态加载模块的3种方法]
- C#调用C++ Build 写的DLL时,有时会出错,错误为无法加载 DLL "XXX.dll": 找不到指定的模块。(异常来自 HRESULT:0xXXXXXX)。。
- python 加载c/c++动态库流程小记
- c++开发python扩展模块:cannot open file ‘python25_d.lib’解决办法
- python - 动态加载模块和类
- python动态加载模块及变量是否存在方法
- 嵌入python的c++程序发布(二)最小化抽取需要的模块
- python核心编程学习杂记2:__name__指示模块应如何被加载
- Python与C/C++ 模块相互调用
- 动态加载python可执行模块的办法(示例代码)
- C++使用boost python import 其他路径的模块
- 利用Boost.Python将C++代码封装为Python模块