distutils-如何在同一个模块中获得扩展模块和python模块?

distutils-如何在同一个模块中获得扩展模块和python模块?,python,distutils,Python,Distutils,我有一个名为foo.c的扩展模块和一个实用python文件utils.py,它扩展了扩展模块的一些基本功能。现在我想使用utils作为foo的子包(foo.utils)。例如: from foo import bar from foo.utils import test ... 我尝试了各种distutils配置,但最终没有成功。通常我的py_模块会覆盖ext_模块。以下是distutils设置示例: from distutils.core import setup, Extension se

我有一个名为foo.c的扩展模块和一个实用python文件utils.py,它扩展了扩展模块的一些基本功能。现在我想使用utils作为foo的子包(foo.utils)。例如:

from foo import bar
from foo.utils import test
...
我尝试了各种distutils配置,但最终没有成功。通常我的py_模块会覆盖ext_模块。以下是distutils设置示例:

from distutils.core import setup, Extension
setup(name='foo',
  version='1.0',
  py_modules = [foo.utils]
  ext_modules=[Extension('foo', ['foo.c'])],
  )
我的目录如下所示

|_ foo/__init__.py
|_ foo/utils.py
|_ foo.c
|_ setup.py

当我尝试只使用ext_模块或py_模块时,两者都可以正常工作。有人有提示吗?或者distutils不可能有提示吗?

您将不能有一个名为foo的C扩展名和一个名为foo.utils的模块。将扩展名重命名为_foo.c,然后创建从_foo导入的
foo/_init__.py

顺便说一句,这不是distutils问题,它与foo的必需结构有关,以使foo.utils工作。“foo”可以是模块或包,但不能同时是模块和包