CannibalChief 2022-10-26 02:15 采纳率: 50%
浏览 123
已结题

C++调用Python,numpy导入不成功

需要使用C++调用Python代码,但是总提示numpy错误,输出信息如下:

  1. Traceback (most recent call last):
  2. File "C:\Python\Python36\lib\site-packages\numpy\core\__init__.py", line 16, in <module>
  3. from . import multiarray
  4. ImportError: cannot import name 'multiarray'
  5. During handling of the above exception, another exception occurred:
  6. Traceback (most recent call last):
  7. File "<string>", line 1, in <module>
  8. File "C:\Python\Python36\lib\site-packages\numpy\__init__.py", line 142, in <module>
  9. from . import add_newdocs
  10. File "C:\Python\Python36\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
  11. from numpy.lib import add_newdoc
  12. File "C:\Python\Python36\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
  13. from .type_check import *
  14. File "C:\Python\Python36\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
  15. import numpy.core.numeric as _nx
  16. File "C:\Python\Python36\lib\site-packages\numpy\core\__init__.py", line 24, in <module>
  17. raise ImportError(msg)
  18. ImportError:
  19. Importing the multiarray numpy extension module failed. Most
  20. likely you are trying to import a failed build of numpy.
  21. If you're working with a numpy git repo, try `git clean -xdf` (removes all
  22. files not under version control). Otherwise reinstall numpy.

C++代码很简单:

  1. #include <iostream>
  2. #include "./python/36.8/include/Python.h"
  3. int main()
  4. {
  5. wchar_t home[] = L"C:/Python/Python36";
  6. Py_SetPythonHome(home);
  7. Py_Initialize();
  8. int r = Py_IsInitialized();
  9. if (r == 0)
  10. {
  11. std::cout << "初始化Python环境失败" << std::endl;
  12. Py_Finalize();
  13. return -1;
  14. }
  15. PyRun_SimpleString("import sys");
  16. PyRun_SimpleString("sys.path.append('C:/Python/Python36/Lib/site-packages')");
  17. PyRun_SimpleString("import numpy");
  18. PyObject* model = 0;// PyImport_ImportModule("algorithm2");
  19. if (model == nullptr)
  20. {
  21. std::cout << "加载Python文件失败" << std::endl;
  22. PyErr_Print();
  23. Py_Finalize();
  24. return -1;
  25. }
  26. PyObject* dict = PyModule_GetDict(model);
  27. if (dict == nullptr)
  28. {
  29. Py_DECREF(model);
  30. std::cout << "获取符号字典失败" << std::endl;
  31. Py_Finalize();
  32. return -1;
  33. }
  34. PyObject* ptr = PyDict_GetItemString(dict, "load_model");
  35. //Py_DECREF(dict);
  36. if (ptr == nullptr)
  37. {
  38. Py_DECREF(model);
  39. std::cout << "获取load_model失败" << std::endl;
  40. Py_Finalize();
  41. return -1;
  42. }
  43. //Py_DECREF(ptr);
  44. Py_DECREF(model);
  45. Py_Finalize();
  46. return 0;
  47. }

展开全部

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-10-26 02:18
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    CannibalChief 2022-10-26 04:53

    成功了。谢谢。这个问题困扰了我10天,真是太冤了

    回复
    logic4648 回复 CannibalChief 2024-06-25 05:49

    具体怎么解决的

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月26日
  • 已采纳回答 10月26日
  • 创建了问题 10月26日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部