Cで書かれたサブモジュールを含むPythonモジュールを作成しました。モジュール自体はfoo
と呼ばれ、Cの部分はfoo._bar
です。それを補強するためにdistutilsで構築されたC拡張モジュールでのスフィンクスの使用
src/
foo/__init__.py <- contains the public stuff
foo/_bar/bar.c <- the C extension
doc/ <- Sphinx configuration
conf.py
...
foo/__init__.py
輸入_bar
、そして有用なものはfoo
モジュールで公開されています。構造は次のようになります。これはビルド時にうまく動作しますが、コンパイルされていない形式では動作しません。_bar
はビルドされるまで存在しないためです。
スフィンクスを使用してプロジェクトを文書化し、foo
モジュールのautodoc拡張子を使用したいと思います。つまり、ドキュメントを作成する前にプロジェクトを構築する必要があります。
私はdistutilsでビルドしているので、ビルドされたモジュールは可変的にdir build/lib.linux-ARCH-PYVERSION
という名前になります。つまり、ディレクトリをSphinxのconf.py
にハードコードすることはできません。
したがって、私のdistutils setup.py
スクリプトは、ビルドされたモジュールに対してSphinxビルダーを実行するように設定しますか? distutilsの以来
setup(cmdclass = {
'fake': fake,
'build_ext_fake' : build_ext_fake
},
package_dir = {'': 'src'},
packages = ['foo'],
name = 'foo',
version = '0.1',
description = desc,
ext_modules = [module_real])
これはかなり良いアプローチです - 私はそれを 'conf.py'に入れることができます(私は思っています)。私は明日それを試してみるよ。 – detly
Aha ...私は 'build_temp'ではなく' build_lib'を使い、クロスコンパイルで混乱させる必要がありましたが、それは機能しているようです(また、拡張部分にも追加ボーナスとして!) – detly
詳細を追加することができます(または、正確な手順で回答を追加して他の人に利益をもたらすことができます)。 – TryPyPy