gpt4 book ai didi

python - 无法在 C++ 中导入 python pkgs

转载 作者:行者123 更新时间:2023-11-28 04:30:40 26 4
gpt4 key购买 nike

我想构建一个 C++ 程序来运行导入 numpy 的 python 脚本,我的 python 版本是 anaconda,我运行该程序但它报告“没有名为 numpy 的模块”。这是代码

#include <iostream>
#include <Python.h>

int main(int argc, char *argv[])
{
if (argc < 1) {
fprintf(stderr, "Usage: call pythonfile funcname [args]\n");
return 1;
}
wchar_t *pName = Py_DecodeLocale(argv[0], NULL);
if (pName == NULL) {
fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
exit(1);
}
// std::cout << pName << std::endl;
Py_SetProgramName(pName);
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print('Today is', ctime(time()))\n");
PyRun_SimpleString("import sys, os");
PyRun_SimpleString("print(os.getcwd())");
PyRun_SimpleString("sys.path.append(os.getcwd())");
PyRun_SimpleString("sys.path.append(\"D:/repos/cppCallPython/x64/Release\")");
PyRun_SimpleString("print(sys.path)");
// PyRun_SimpleString("import numpy");
PyObject *moduleName, *pModule;
moduleName = PyUnicode_DecodeFSDefault("interface");
// moduleName = PyUnicode_DecodeFSDefault(argv[1]);
pModule = PyImport_Import(moduleName);
if (pModule == NULL) {
PyErr_Print();
fprintf(stderr, "Fails to import the module.\n");
}
Py_DECREF(moduleName);
if (Py_FinalizeEx() < 0) {
exit(120);
}
PyMem_RawFree(pName);
system("pause");
return 0;
}

> Today is Mon Oct 29 16:32:38 2018 D:\repos\cppCallPython\cppCallPython ['C:\Users\Bryan Zoe\Anaconda3\python36.zip', 'C:\Users\Bryan Zoe\Anaconda3\Lib', 'C:\Users\Bryan Zoe\Anaconda3\DLLs', 'C:\Program Files\Python36\Lib', 'C:\Program Files\Python36\DLLs', 'D:\repos\cppCallPython\x64\Release', 'C:\Program Files\Python36', 'C:\Program Files\Python36\lib\site-packages', 'D:\repos\cppCallPython\cppCallPython', 'D:/repos/cppCallPython/x64/Release'] Traceback (most recent call last): File "D:\repos\cppCallPython\x64\Release\interface.py", line 1, in import numpy as np ModuleNotFoundError: No module named 'numpy' Fails to import the module.

interface.py 位于 'D:/repos/cppCallPython/x64/Release'。看起来 python 解释器是一个纯解释器,代码创建了一个新的 python virtualenv。我不知道如何解决它。这是interface.py的代码

import numpy as np
zeros = np.zeros((3, 3))
print("Succeeds to call python scripts")
print(zeros)

它在电源外壳中工作正常 enter image description here

最佳答案

检查你的代码,python 内置包工作正常,比如 time 和 os 包。 numpy 是第三个包,它不是 wotk,所以你需要像 python library install 文件夹到 C++ program linker additional library。

在VS中,设置路径可能是这样的项目 > 属性 > 配置属性 > 链接器 > 常规 > 附加库目录

请检查。

关于python - 无法在 C++ 中导入 python pkgs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53041722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com