我想创建一个名为“mypack”的Python 3包,它可以与pip一起安装。它有一些c扩展和一些调用这些扩展的python代码。这是我的目录结构:
setup.py
mypack/__init__.py
mypack/mypack.py
foopkg/foo.cpp
设置。py文件具有以下代码:
from setuptools import setup, Extension
PACKAGE_NAME = 'mypack'
module = Extension('foo',
language = "c++",
sources = ['foopkg/foo.cpp'])
setup(name=PACKAGE_NAME,
version='1.0',
packages=[PACKAGE_NAME],
ext_package=PACKAGE_NAME,
ext_modules=[module],
include_package_data=True)
我根据另一个相关问题改编了这段代码,其中用户希望使用以下内容导入扩展:
mypack.xxx
make_array
和
print_array
...
static PyMethodDef FooMethods[] = {
{ "make_array", make_array, METH_VARARGS, "Put number in array"},
{ "print_array", print_array, METH_VARARGS, "Print number from array"},
{ NULL, NULL, 0, NULL}
};
static struct PyModuleDef foomodule = {
PyModuleDef_HEAD_INIT,
"foo",
"Make/Print array",
-1,
FooMethods
};
PyMODINIT_FUNC PyInit_foo(void)
{
return PyModule_Create(&foomodule);
}
我希望能够在包中导入此扩展以使用它(这是
mypack.py
):
import mypack.make_array
import mypack.print_array
def dostuff():
array = make_array(10)
print_array(array)
__init__.py
from .mypack import dostuff
mypack
它抱怨中国的进口产品
我的背包。py公司
foo.xx
或
mypack.xx
. 我用嵌套结构构建了其他包,这些包使用模块中其他python文件的代码,使用
__初始化。py公司