2012-05-14 57 views
4

我有一个名为的扩展模块foo.c和一个实用python文件utils.py它扩展了我的扩展模块的一些基本功能。现在我想使用utils作为foo(foo.utils)的一个子包。如下所示:distutils - 如何在同一模块中获取扩展和python模块?

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?

回答

5

您将无法获得名为foo的C扩展名和名为foo.utils的模块。将您的扩展名重命名为_foo.c,然后创建从_foo导入的foo/__init__.py

顺便说一句,这不是一个distutils问题,它必须与所需的结构foo来获得foo.utils的工作。 “foo”既可以是模块也可以是包,但不能同时包含两者。