2012-05-14 56 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」既可以是模塊也可以是包,但不能同時包含兩者。