* .pyxファイルをコンパイルしようとしています。同じディレクトリにある__init__.py
の中にいくつかの定義と定数を使用しています。setuptoolsを使ったCython bdist_eggが無効なパッケージを作成します
setup.py
Foo/__init__.py
Foo/Foo.pyx
と、次のように設定コマンドは次のとおりです:プロジェクト構造がある卵が構築および配備されたときに
from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy
setup(
cmdclass = {'build_ext': build_ext},
ext_module = [ Extension(name='Foo', sources=['Foo/Foo.pyx']) ],
include_dirs=[numpy.get_include()],
name='Foo',
packages=['Foo'],
zip_safe=True
)
問題が発生します。
Foo.so
Foo.py
Foo/__init__.py
今、Foo.py
は、基本的には* .soのファイルをインポートし、いくつかの動的なインポートコードが含まれています。その結果卵の構造は次の通りです。しかし、Foo/__init__.py
が存在するため、import Foo
は、ちょうどいくつかの定数を含む__init__.py
からのシンボルをインポートしようとします(すべての関連するコードは実際にFoo.so
にあります)。
私は__init__.py
のすべての定義をFoo.pyx
に貼り付けることでこの問題をハッキングしましたが、適切な解決策が何であるか把握しようとしています。
アドバイスありがとうございます。