하나의 패키지 아래에 여러 파이썬 모듈을 모으고 싶습니다. 그래서 그들은 파이썬 패키지와 모듈의 글로벌 세트에서 너무 많은 이름을 예약하지 않습니다. 하지만 C 언어로 쓰여진 모듈에 문제가 있습니다.내 파이썬 C 모듈을 패키지 안에 넣는 법?
다음은 공식 Python 문서에서 직접 작성한 간단한 예제입니다. http://docs.python.org/distutils/examples.html
from distutils.core import setup
from distutils.extension import Extension
setup(name='foobar',
version='1.0',
ext_modules=[Extension('foopkg.foo', ['foo.c'])],
)
내 foo.c를 파일이
그것은 구축하고 잘 설치#include <Python.h>
static PyObject *
foo_bar(PyObject *self, PyObject *args);
static PyMethodDef FooMethods[] = {
{
"bar",
foo_bar,
METH_VARARGS,
""
},
{NULL, NULL, 0, NULL}
};
static PyObject *
foo_bar(PyObject *self, PyObject *args)
{
return Py_BuildValue("s", "foobar");
}
PyMODINIT_FUNC
initfoo(void)
{
(void)Py_InitModule("foo", FooMethods);
}
int
main(int argc, char *argv[])
{
// Pass argv[0] to the Python interpreter
Py_SetProgramName(argv[0]);
// Initialize the Python interpreter. Required.
Py_Initialize();
// Add a static module
initfoo();
return 0;
}
처럼 보이지만 나는 foopkg.foo를 가져올 수 없습니다 : 당신은 여기에서 페이지 하단에서 찾을 수 있습니다! 이름을 "foo"로 변경하면 완벽하게 작동합니다.
어떻게하면 "foopkg.foo"작업을 할 수 있습니까? 예를 들어 C 코드의 Py_InitModule()에서 "foopkg.foo"로 "foo"를 변경해도 도움이되지 않습니다.
을! 고마워요 :) 나는 아직도 파이썬 문서에 언급되어 있어야한다고 생각하지만 : / –