无法在C++; < P>我想建立一个C++程序来运行Python脚本,它导入NUMPY,我的Python版本是AcANDA,我运行程序,但是它报告“没有NAMPY模块”。这是密码 #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; }

无法在C++; < P>我想建立一个C++程序来运行Python脚本,它导入NUMPY,我的Python版本是AcANDA,我运行程序,但是它报告“没有NAMPY模块”。这是密码 #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; },python,c++,pythoninterpreter,Python,C++,Pythoninterpreter,它在电源外壳中工作良好 检查代码,python内置包可以正常工作,例如time和os包。NUMPY是第三个包,它不是WOTK,所以您需要像Python库安装文件夹一样进入C++程序链接器附加库。 在VS中,设置路径可能是这样的 项目>属性>配置属性>链接器>常规>附加库目录 请检查。如果您在交互式shell中从编译的可执行文件所在的工作目录运行Python代码,该代码是否有效?@UlrichEckhardt it work。我在Power Shell中尝试了它。谢谢你的建议,我检查了sys.pa

它在电源外壳中工作良好

检查代码,python内置包可以正常工作,例如time和os包。NUMPY是第三个包,它不是WOTK,所以您需要像Python库安装文件夹一样进入C++程序链接器附加库。 在VS中,设置路径可能是这样的 项目>属性>配置属性>链接器>常规>附加库目录


请检查。

如果您在交互式shell中从编译的可执行文件所在的工作目录运行Python代码,该代码是否有效?@UlrichEckhardt it work。我在Power Shell中尝试了它。谢谢你的建议,我检查了sys.path,发现程序链接到了错误的站点包库文件夹。我将“C:\Users\Bryan Zoe\Anaconda3\Lib\site packages”添加到sys.path中,它就可以工作了。
import numpy as np
zeros = np.zeros((3, 3))
print("Succeeds to call python scripts")
print(zeros)