2016-04-19 34 views
8

私はCythonでパッケージをビルドしています。Cythonコンパイルエラー:ダイナミックモジュールがモジュールエクスポート関数を定義していません

from distutils.core import setup 
from distutils.extension import Extension 
from Cython.Build import cythonize 
import numpy 
import scipy 

extensions = [ 
    Extension("xxxxx",["xxxx/xxxxx.pyx"], 
    include_dirs=[numpy.get_include(),"."]), 
    Extension("nnls",["xxxxx/xxxxx.pyx"], 
       include_dirs=[numpy.get_include(),"."]), 
] 

setup(
    name='xxxxxx', 
    version='0.0.0', 
    description='''********''', 
    url='xxxxxxx', 
    author='xxxxx', 
    author_email='xxxxx', 
    packages=[ 
     'xxxxx', 
    ], 
    install_requires=[ 
     'cython', 
     'numpy', 
     'scipy', 
    ], 
    ext_modules=cythonize(extensions), 
) 

しかし、私はしかし、それは次のエラーを持つのPython 3でコンパイルされていないことは、Python 2で働いているのPython 3のインストール時にエラーを取得しています:私はsetup.pyための構造として、以下を使用しています:

dynamic module does not define module export function

どうすればこの問題を解決できますか? setup.pyの構造はこれがコンパイルされていない理由ですか?

答えて

4

Python 3(python3 setup.py build_ext、おそらく--inplace)でsetup.pyを呼び出す必要があります。これは、Python 3が、モジュール起動時に呼び出されるinit関数の別の名前を定義しているため、正しい名前が生成されるようにPython 3を使用してビルドする必要があるからです。

は少し詳細についてはCython Compilation Error: dynamic module does not define module export functionHow to specify Python 3 source in Cython's setup.py?を参照してください(それはこれらの質問の重複を境ですが、私の見解ではかなりではありません)

関連する問題