C++ 调用python 之 错误以及解决方法

在C++项目中调用python时碰到了个特别坑(我的沙雕错误)的地方。

在项目中调用python要用到

	PyObject *pName = PyUnicode_DecodeFSDefault("detect_model");
	PyObject *pModule = PyImport_Import(pName);		/* 导入模块 */
	if (pModule == NULL)
	{
		cout << "没找到" << endl;
	}

来导入python模块文件,但是一直出现 PyObject *pModule = NULL的情况,参考网上各种改环境/设置路径都没有用,在python环境下运行该模块也没问题,折磨了一天最后终于发现了问题:
在我的detect_model.py文件中 import了其它文件夹中的py文件,比如:from utils.utils import *,这里就是最大的坑!!!

我的utils文件目录是这样的:

├─utils
│  └─__pycache__
│  └─utils.py
│  └─datasets.py

发现每次运行到from utils.utils import *就会出现PyObject *pModule = NULL 最后终于发现,在我的python环境中的site_package文件夹下也有一个utils文件夹!,大概率是因为每次import的时候python是在这里来找utils.py的,找不到就会出错,然后模型就无法导入。。。
最后把我的python项目文件夹名字改为

├─my_utils
│  └─__pycache__
│  └─my_utils.py
│  └─datasets.py

同时修改各个py文件中import utils改为对应的my_utils就好了。。。。
得到教训:命名的时候最好还是别用这种常用词命名了,至少加个my之类的


命名不规范,日后两行泪 555555
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值