我试图在我的C ++项目中嵌入一个python代码。但是,由于某些原因,嵌入式python脚本无法找到导入的模块(即numpy)为了使问题更容易,请考虑以下简化代码CPP:
int main() {
char filename[] = "path to python file";
FILE* fp;
Py_Initialize();
fp = _Py_fopen(filename, "r");
PyRun_SimpleFile(fp, filename);
Py_Finalize();
return 0
}
Python代码:
import numpy as np
但是,我收到以下错误
ModuleNotFoundError:没有名为'numpy'的模块
我应该提一下,我可以使用cmd运行Python脚本而不会出错(已经安装了所有必需的库)。
发布于 2018-08-21 14:40:40
嵌入时,如果你没有做任何特别的事情来告诉Python,它将通过查找python
你的程序来计算Python安装的位置PATH
。你可能与Anaconda Python库链接,但bin
它的目录不在PATH
。实际上用它Py_SetPythonHome()
来告诉Python安装的位置会更好。
另一个问题是,当您使用Anaconda Python进行链接时,如果您没有以固定到该特定共享库位置的方式链接它,那么如果它是相同的Python版本,它将错误地选择系统Python。查看LD_RUN_PATH
链接时使用环境变量以指定在运行时使用库的目录。即使这样,有时候由于某些原因这对Anaconda Python不起作用,并且需要做相同的操作LD_PRELOAD
来强制加载正确的库。
总的来说,我对Anaconda Python的经验,特别是嵌入mod_wsgi,是一种痛苦,并不总是有效。普通的PSF Python发行版更适合嵌入。
发布于 2018-08-21 15:25:29
我找不到问题的根源。但是,我卸载了Anaconda并安装了原始的python,这解决了我的问题。
https://stackoverflow.com/questions/-100002329
复制相似问题