7

別のモジュールに対してローカルになるようにC-Pythonモジュールをコンパイルするにはどうすればよいですか?たとえば、「bar」という名前のモジュールと「mymodule」という名前の別のモジュールがある場合、「importmymodule.bar」を介してインポートされるように「bar」をコンパイルするにはどうすればよいですか。

(言い回しが不十分な場合は申し訳ありませんが、適切な用語が何であるかわかりませんでした。)

setup.pyで次のことを試しましたが、機能しないようです。

from distutils.core import setup, Extension

setup(name='mymodule',
      version='1.0',
      author='Me',
      ext_modules=[Extension('mymodule', ['mymodule-module.c']),
                   Extension('bar', ['bar-module.c'])])

編集

アレックスに感謝します。だからこれは私が使用することになったものです:

from distutils.core import setup, Extension

PACKAGE_NAME = 'mymodule'

setup(name=PACKAGE_NAME,
      version='1.0',
      author='Me',
      packages=[PACKAGE_NAME],
      ext_package=PACKAGE_NAME
      ext_modules=[Extension('foo', ['mymodule-foo-module.c']),
                   Extension('bar', ['mymodule-bar-module.c'])])

もちろん、を含む「mymodule」という名前のフォルダがあります__init__.py

4

1 に答える 1

5

手順はこちらです

Extension('foo'、['src / foo1.c'、'src / foo2.c'])

ルートパッケージに存在する拡張機能について説明しますが、

Extension('pkg.foo'、['src / foo1.c'、'src / foo2.c'])

pkgパッケージの同じ拡張機能について説明します。ソースファイルと結果のオブジェクトコードはどちらの場合も同じです。唯一の違いは、ファイルシステムのどこにあるか(したがって、Pythonの名前空間階層のどこにあるか)、結果の拡張機能が存在することです。

パッケージは常にモジュールを含むディレクトリ(またはzipファイル)であることを忘れないでください__init__。パッケージ本体であるモジュールを作成するために、そのモジュールが呼び出さ__init__れ、パッケージのディレクトリ(またはzipファイル)の下に配置されます。私はCでそれをしたことがありません。直接実行できない場合は、モジュールに名前を付けます。たとえば_init、代わりに、実行し__init__.pyますfrom _init import *(;-の非常に少数の正当な使用法の1つ)from ... import *

于 2009-11-05T15:57:28.213 に答える