Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;-使用numpython嵌入-部署时出错_Python_C++_Numpy - Fatal编程技术网

C++;-使用numpython嵌入-部署时出错

C++;-使用numpython嵌入-部署时出错,python,c++,numpy,Python,C++,Numpy,我试图用Python在C++应用程序中嵌入Python。我正在使用Windows 10和Visual Studio 2015。 目前我已经安装了Anaconda和WinPython(因为我使用的Python脚本只能与其中一个一起工作)。我没有任何与python相关的环境变量 我的C++应用程序,我使用的是WyPython Python,它有NUMPY和其他几个包。在使用VisualStudio进行调试和发布时,我成功地将python和numpy嵌入到我的应用程序中。一切正常,python已经初始

我试图用Python在C++应用程序中嵌入Python。我正在使用Windows 10和Visual Studio 2015。 目前我已经安装了Anaconda和WinPython(因为我使用的Python脚本只能与其中一个一起工作)。我没有任何与python相关的环境变量

我的C++应用程序,我使用的是WyPython Python,它有NUMPY和其他几个包。在使用VisualStudio进行调试和发布时,我成功地将python和numpy嵌入到我的应用程序中。一切正常,python已经初始化,我可以使用numpy数组和函数。WinPython的使用是正确的。作为我代码中的一个简单测试,我有:

_putenv_s("PYTHONPATH", ".");
Py_InitializeEx(0);
PyRun_SimpleString("import sys");
PyRun_SimpleString("print(sys.path)");
PyRun_SimpleString("print(sys.prefix)");
PyRun_SimpleString("print(sys.executable)");
PyRun_SimpleString("import importlib.machinery");
PyRun_SimpleString("print(importlib.machinery.all_suffixes())");
init_numpy2();
上面印着:

['C:\\DevC++\\Tesseler-Cmake\\build', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\python37.zip', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\DLLs', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\lib', 'C:\\DevC++\\Tesseler-Cmake\\build\\Release', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\lib\\site-packages', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\lib\\site-packages\\win32', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\lib\\site-packages\\win32\\lib', 'C:\\Git\\WPy64-3741\\python-3.7.4.amd64\\lib\\site-packages\\Pythonwin']
C:\Git\WPy64-3741\python-3.7.4.amd64
C:\DevC++\Tesseler-Cmake\build\Release\Tesseler.exe
['.py', '.pyw', '.pyc', '.cp37-win_amd64.pyd', '.pyd']
然后,我在发行版中使用Wix设置了一个安装程序,并检查了我的应用程序是否附带了winpython37.dll。但当我运行程序时,调用import_numpy2()时会出现以下错误:

我不明白为什么要将anaconda添加到sys.path和sys.prefix中,因为我在visual studio项目中从未引用过它,也没有任何环境变量引用过它。 我明白为什么使用anaconda的dll会导致一些问题,但我向Process Explorer检查了我的应用程序是否使用了它附带的python37.dll,就是这样。 知道是什么导致了这个错误吗

更新:

按照本文所述的思路,我创建了一个python子文件夹,并复制了其中的整个numpy、scipy、pandas和statsmodels文件夹(这4个模块是我的脚本所需要的),从而使它工作起来。这些文件夹是从
C:\Git\WPy64-3741\python-3.7.4.amd64\Lib\site包中复制的。我还将这个python子文件夹添加到PYTHONPATH:
\u putenv\u s(“PYTHONPATH”,”;/python”)

无论如何,如果有人有更好的解决方案,我很想听听,因为当我的应用程序大约20个月时,我发现捆绑这些模块(超过600个月)很烦人

['C:\\Tesseler', 'C:\\Tesseler\\python37.zip', 'C:\\Users\\Florian\\anaconda3\\Lib', 'C:\\Users\\Florian\\anaconda3\\DLLs', 'C:\\Users\\Florian\\anaconda3', 'C:\\Users\\Florian\\anaconda3\\lib\\site-packages', 'C:\\Users\\Florian\\anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\Florian\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\Florian\\anaconda3\\lib\\site-packages\\Pythonwin']
C:\Users\Florian\anaconda3
C:\Tesseler\Tesseler.exe
['.py', '.pyw', '.pyc', '.cp37-win_amd64.pyd', '.pyd']
ModuleNotFoundError: No module named 'numpy'