- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 python 的新手,所以这可能是一个愚蠢的问题。我想用嵌入式 python 脚本编写简单的 c 程序。我有两个文件:
调用函数.c:
#include <Python.h>
int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pDict, *pFunc, *pValue;
if (argc < 3)
{
printf("Usage: exe_name python_source function_name\n");
return 1;
}
// Initialize the Python Interpreter
Py_Initialize();
// Build the name object
if ((pName = PyString_FromString(argv[1])) == NULL) {
printf("Error: PyString_FromString\n");
return -1;
}
// Load the module object
if ((pModule = PyImport_Import(pName)) == NULL) {
printf("Error: PyImport_Import\n");
return -1;
}
// pDict is a borrowed reference
if ((pDict = PyModule_GetDict(pModule))==NULL) {
printf("Error: PyModule_GetDict\n");
return -1;
}
...
和
你好.py:
def hello():
print ("Hello, World!")
我按如下方式编译和运行它:
gcc -g -o call-function call-function.c -I/usr/include/python2.6 -lpython2.6
./call-function hello.py hello
并拥有这个:
Error: PyImport_Import
即PyImport_Import 返回 NULL
。你能帮我解决这个问题吗?任何帮助将不胜感激。
祝愿
亚历克斯
最佳答案
我通过将 PYTHONPATH 设置为 pwd
解决了这个问题。还应为 argv[1] 设置模块名称(不带 .py)。
谢谢!
关于python - PyImport_Import 失败(返回 NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532371/
我正在尝试在我的 c++ 中调用 python 函数 当我导入我的 python 模块时,它给出了这个错误:ModuleNotFoundError: No module named 'test'这是我
我试过替换 PyRun_SimpleString("import Pootle"); 与 PyObject *obj = PyString_FromString("Pootle"); PyImport
我正在尝试运行 embedding example并且我不能从当前工作目录加载模块,除非我明确地将它添加到 sys.path 然后它工作: PyRun_SimpleString("import sys
使用下一行 pModule = PyImport_Import(pName); 只从当前目录加载模块。 但是我想从其他地方加载什么?有没有一种巧妙的方法可以做到这一点? PyRun_SimpleStr
首先,是的,我看到了this和 this ,但是他们没有解决我的问题/错误。 因此,我试图从 C/C++ 调用 Python 函数,但是当调用 PyImport_Import() 时,它返回 NULL
我是 python 的新手,所以这可能是一个愚蠢的问题。我想用嵌入式 python 脚本编写简单的 c 程序。我有两个文件: 调用函数.c: #include int main(in
我有一个这样的cpp代码: void callPython() { Py_Initialize(); PyObject* sysPath = PySys_GetObject("p
我正在尝试一个非常基本的“hello world”程序,它应该在我的 C++ 控制台应用程序中嵌入一个 python 脚本,但它在 pModule = PyImport_Import(pName);
我正在尝试通过 c Api 从 c++ 调用 python,以获取 c++ 中两个 numpy 数组的值。第一次调用我的程序 callPython() 时,一切似乎都运行良好,但第二次调用导致 SIG
尝试从 Linux,c++ 的 main() 调用 my_script.py 的 main(filename) 函数。 对于pName = PyUnicode_DecodeFSDefault(argv
我是一名优秀的程序员,十分优秀!