c++加载python模块,但是PyImport_ImportModule老返回NULL

举报
风吹稻花香 发表于 2021/06/05 01:49:38 2021/06/05
【摘要】 问题描述: 调用 PyImport_ImportModule加载python老是返回NULL,如下所示:“没有找到符号” 但是我检查了程序所在的路径啊,有这个jieba-test.py,但是就是返回NULL。 解决办法: 如果你是使用这个语句PyRun_SimpleString(“sys.path.append(‘./’)”); 指定的路径,请确保你程序的工作路...

问题描述:
调用 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('./')");
 
 
  • 1

是指加载程序当前工作路径,即你实际运行的时候程序的工作路径。
如果程序在PyRun_SimpleString(“sys.path.append(‘./’)”);之前改变了工作路径,而改变之后的工作路径下没有你想要加载的模块,那么就会出现上图的错误,返回一个NULL,提示“没有找到符号”。

但是按照上面说的意思,做了修改还是出现的上面“找不到符号”,这时最好使用命令行执行一下生成的程序(或者用鼠标点击运行),模拟一下程序实际的运行情况。查看一下是否运行正常。

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/78523115

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。