Python 3.x 如何将C扩展构建为带distutils的C扩展主模块的子模块?

Python 3.x 如何将C扩展构建为带distutils的C扩展主模块的子模块?,python-3.x,distutils,python-c-api,distutils2,Python 3.x,Distutils,Python C Api,Distutils2,我有两个文件,module.c和submodule.c 我在setup.py中有以下代码: from distutils.core import setup, Extension module = Extension('module', sources = ['module.c']) submodule = Extension('submodule', sources = ['submodule.c']) setup (name = 'module', version = '

我有两个文件,
module.c
submodule.c

我在setup.py中有以下代码:

from distutils.core import setup, Extension

module = Extension('module', sources = ['module.c'])

submodule = Extension('submodule', sources = ['submodule.c'])

setup (name = 'module',
       version = '0.1',
       description = 'a module that does things',
       ext_modules = [module, submodule])
我构建它如下:

$ DISTUTILS_DEBUG=1 python3 setup.py build
在python shell中,当我执行以下操作时:

>>> import module # works
>>> from module import submodule # this should work
...
ImportError: cannot import name 'submodule' from 'module' (/home/username/Projects/module/build/lib.linux-x86_64-3.8/module.cpython-38-x86_64-linux-gnu.so)
>>> import module.submodule # is this supposed to work?
...
ModuleNotFoundError: No module named 'module.submodule'; 'module' is not a package
>>> import submodule # This should not work
...
ImportError: dynamic module does not define module export function (PyInit_submodule)
请注意,在最后一种情况下(
import submodule
),我的
PyInit
函数名为
PyInit\u module\u submodule()
,它抛出了
ImportError
。如果我将其更改为
PyInit\u submodule()
,则
import submodule
起作用


我可能对Python中模块的工作方式有一个根本性的误解,因此非常感谢您提供的所有帮助。

submodule=Extension('module.submodule',sources=['submodule.c'])
请看这不起作用。现在只有
导入子模块
起作用,而
从模块导入子模块
仍然不起作用,
导入模块。子模块
也不起作用。是否要创建包?如何处理普通py文件?老实说,我不知道。我还没有用普通的python文件制作包。只是简单的单文件模块,可以直接导入。
submodule=Extension('module.submodule',sources=['submodule.c'])
请看这不起作用。现在只有
导入子模块
起作用,而
从模块导入子模块
仍然不起作用,
导入模块。子模块
也不起作用。是否要创建包?如何处理普通py文件?老实说,我不知道。我还没有用普通的python文件制作包。只是简单的单文件模块,可以直接导入。