python - 没有使用 Python/C API 的名为 ctypes 的模块

标签 python c ctypes python-c-api

我有PythonCode.py:

import os, ctypes
print "ctypes are imported"

CCode.c:

...
PySys_SetPath(path_to_PythonCode);
PyObject *pModule = PyImport_ImportModule("PythonCode");
if (!pModule) {
  PyErr_Print();
  return;
}
...

PyErr_Print() 打印:

Traceback (most recent call last):   File ".../PythonCode.py", line 1,
  in <module> import os, ctypes
ImportError: No module named ctypes

在终端中执行Python代码显示ctypes确实存在:

$ python --version
Python 2.7.1
$ python PythonCode.py
ctypes are imported

为什么Python/C API无法导入ctypes?

最佳答案

您用单个路径替换了默认的 sys.path 列表。相反,您可以插入新路径:

PyObject *sys_path, *path;

sys_path = PySys_GetObject("path");
if (sys_path == NULL || !PyList_Check(sys_path)) {   
    /* ZOMG! That's so wrong... */
    return;
}
path = PyString_FromString(path_to_PythonCode);
PyList_Insert(sys_path, 0, path);
Py_DECREF(path);

关于python - 没有使用 Python/C API 的名为 ctypes 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972547/

相关文章:

python - 将 opencv 帧写入 gstreamer rtsp 服务器管道

python - 将范围值转换为整数

python - 在 64 位上运行 PIL

c - 使用一个线程生成结构并使用选择器在不同线程中接收

c - 需要帮助理解功能逻辑

Python 使用 ctypes 自定义结构调用 C 共享库

python - Bokeh 多线使一条线不可见

c - C中指向数组赋值的指针

c - 实现外部函数接口(interface)的指南

python - 使用 python-ctypes 将 fortran 与 python 接口(interface)