2017-11-28 5 views
0

* .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に貼り付けることでこの問題をハッキングしましたが、適切な解決策が何であるか把握しようとしています。

アドバイスありがとうございます。

答えて

0

私はsetup()コマンドの無関係な引数に私の問題を追跡しました。文書番号https://docs.python.org/2/distutils/setupscript.htmlで判断すると、私はpackages=['Foo']引数を必要としません。実際には、それが原因で内側のFooパッケージが作成され、すべてがうんざりしています。