2016-07-18 1 views
1

私は次のようにインストールcython拡張子があります。setup.pyでdistutilsやsetuptoolsを使ってcython extentionをインポート可能にする方法(すべてのインポートの前にsys.pathに追加する必要はありません)?

from distutils.core import setup 
from Cython.Build import cythonize 

setup(ext_modules=cythonize(
    "package.pyx", 
    language="c++") 
) 

私は、このパッケージをインポートしたい場合は、私が使用してパスにビルドフォルダを追加する必要がありますが:

import sys 
sys.path.append(~/package/build/....) 

に必要なものインストール時にモジュールをLinuxにインストールし、パスに追加することなくインポートできるように変更しますか?

私もsetuptoolsを使用しています。

+0

'のpython setup.pyにbuild_ext --inplace'あなたが探しているものかもしれません。 –

答えて

2

私のsetup.pyをテンプレートとして試してみてください...これらのことは、正確には説明されていません。あなたがinplaceを構築する場合は、ここで覚えておくべきことの一つは、あなたはおそらくfrom projectname.module import moduleになります。

try: 
    from setuptools import setup 
    from setuptools import Extension 
except ImportError: 
    from distutils.core import setup 
    from distutils.extension import Extension 

module = 'MyModuleName' # this assumes your .pyx and your import module have the same names 
# ignore the below extra options if you don't need them (i.e. comment out `#`) 
ext_modules = [Extension(module, sources=[module + ".pyx"], 
       include_dirs=[], 
       library_dirs=[], 
       extra_compile_args=[], 
       language='c++')] 

setup(
    name = module, 
    ext_modules = ext_modules, 
    cmdclass = {'build_ext': build_ext}, 
    include_dirs = [np.get_include(), os.path.join(np.get_include(), 'numpy')] 
    ) 
関連する問題