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では不可能ですか?

4

1 に答える 1

5

fooという名前のC拡張機能と、foo.utilsという名前のモジュールを持つことはできません。拡張機能の名前を_foo.cに変更しfoo/__init__.pyてから、_fooからインポートするものを作成します。

ところで、これはdistutilsの問題ではなく、foo.utilsを機能させるために必要なfooの構造と関係があります。「foo」はモジュールまたはパッケージのいずれかですが、両方にすることはできません。

于 2012-05-14T15:01:42.500 に答える