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

4

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

from foo import bar
from foo.utils import test
...

我尝试了多种distutils配置,但最终没有成功。经常出现我的py_modules覆盖了我的ext_modules。下面是一个示例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_module 或 py_module 时,两者都可以正常工作。有没有人能给出提示或者说这不可能通过 distutils 实现?

1个回答

5
你不能同时拥有一个名为foo的C扩展和一个名为foo.utils的模块。将你的扩展重命名为_foo.c,然后创建foo/__init__.py,它从_foo中导入。顺便说一下,这不是distutils问题,它与要获取foo.utils工作所需的foo结构有关。"foo"可以是模块或包,但不能同时是两者。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接