Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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
Cython PYD是一个DLL,有没有简单的方法将Python嵌入调用它的可执行文件中? 我试图用PyPy、BANDA、SCIPY和一些编译的Cython pyd文件将python嵌入到C++ .exe中。有一些关于嵌入Python的说明,但这些说明并没有真正扩展到其他库:为了确保这在缺少Python版本的Windows机器上工作,我在这里使用的是3.5.1的嵌入式库,它的使用文档很少:_Python_C++_Numpy_Dll_Cython - Fatal编程技术网

Cython PYD是一个DLL,有没有简单的方法将Python嵌入调用它的可执行文件中? 我试图用PyPy、BANDA、SCIPY和一些编译的Cython pyd文件将python嵌入到C++ .exe中。有一些关于嵌入Python的说明,但这些说明并没有真正扩展到其他库:为了确保这在缺少Python版本的Windows机器上工作,我在这里使用的是3.5.1的嵌入式库,它的使用文档很少:

Cython PYD是一个DLL,有没有简单的方法将Python嵌入调用它的可执行文件中? 我试图用PyPy、BANDA、SCIPY和一些编译的Cython pyd文件将python嵌入到C++ .exe中。有一些关于嵌入Python的说明,但这些说明并没有真正扩展到其他库:为了确保这在缺少Python版本的Windows机器上工作,我在这里使用的是3.5.1的嵌入式库,它的使用文档很少:,python,c++,numpy,dll,cython,Python,C++,Numpy,Dll,Cython,在调用Py\u Initialize()之前,我从嵌入的发行版中提取python35.zip文件,并将其放置在项目目录中,然后按此处所述引用它:即 #包括 std::wstring python_路径; python_path+=L“\\pythonlibs\\python35.zip”; Py_SetPath(python_path.c_str()); Py_初始化(); 由于某些原因,我无法运行编译后的版本。我试图将Python与我的系统构建分开。尽管C:\Anaconda3\Lib\si

在调用
Py\u Initialize()
之前,我从嵌入的发行版中提取
python35.zip
文件,并将其放置在项目目录中,然后按此处所述引用它:即

#包括
std::wstring python_路径;
python_path+=L“\\pythonlibs\\python35.zip”;
Py_SetPath(python_path.c_str());
Py_初始化();

由于某些原因,我无法运行编译后的版本。我试图将Python与我的系统构建分开。尽管
C:\Anaconda3\Lib\site packages\Numpy\core\include
,我仍在从系统路径引用Numpy include,不确定这是否有问题。我所有的代码都很快,因为我使用的是NumPy
memoryview
和优化的Pandas数据操作,我需要保留它们。这里不是MSVC专家,所以只需要寻找能够指导我正确嵌入Python的人。非常感谢。

python\u path+=L“\\python35.zip”
将引用类似于
C:\python35.zip的内容,这可能不是预期的内容。Good call@J.J.Hakala我将.zip复制到了C:\中,现在它只是在尝试初始化Python解释器而不是显示错误消息时崩溃了。。。EmbeddePythonNumpyc++.exe中0x0000000000000000处未处理的异常:0xC0000005:访问冲突执行位置0x0000000000000000。当我启动调试器时。至少在接近启动和运行时,担心上述问题,我意识到内存地址无法帮助任何人进行故障排除…//做一些工作。外部工作(数值x,一些数据,答案);std::cout如果您遵循,则至少存在一个问题:类似于
import\u wrapper\u inner()
的代码不检查返回值。我已经试着解释了这可能导致的后果。您可以尝试将PYTHONPATH环境变量设置为指向扩展模块和其他东西所在的目录。谢谢@J.J.Hakala,这在将来可能会派上用场。正如您所提到的,我在编译测试脚本时仍然遇到问题,但是我可以尝试用另一种方法来实现这一点。改变了我的问题以反映新的目的。
#include <Python.h>
std::wstring python_path;
python_path += L"\\pythonlibs\\python35.zip";
Py_SetPath(python_path.c_str());
Py_Initialize();