4
複数の.pyxファイルを実行可能パッケージ(.DLL)に変換するためにCythonを使用したいと思います。Cythonとdistutils
distutilsを使用して複数の.pyxから単一のWindows DLLを作成するにはどうすればよいですか?使用
サンプル:
sub1.pyx:
cimport sub1
class A():
def test(self, val):
print "A", val
sub1.pxd:
cdef class A:
cpdef test(self,val)
sub2.pyx:
cimport sub2
class B():
def test(self):
return 5
sub2.pxd:
cdef class B:
cpdef test(self)
のinitの.py:
cimport sub1
cimport sub2
import sub1
import sub2
setup.py:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("sub", ["__init__.pyx", "sub1.pyx", "sub2.pyx"])]
setup(
name = 'Hello world app',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
エラー:
sub1.obj : error LNK2005: ___pyx_module_is_main_sub already defined in __init__.obj
sub1.obj : error LNK2005: _initsub already defined in __init__.obj
sub2.obj : error LNK2005: ___pyx_module_is_main_sub already defined in __init__.obj
sub2.obj : error LNK2005: _initsub already defined in __init__.obj
Creating library build\temp.win32-2.7\Release\sub.lib and object build\temp.win32-2.7\Release\sub.exp
C:\temp\ctest\sub\sub.pyd : fatal error LNK1169: one or more multiply defined symbols found
を使用あなたは本当に彼の問題を解決するための複数の方法を与えている、またはすでに与えられた回答を編集しますか?編集している場合は、この投稿をクリーンアップし、保持したい回答の下にある「編集」リンクを使用してください。 –
問題は、SOがOpera 11.62で正しく動作しないことです。投稿の編集で復帰改行を使用するために改行キーを使用することができません。 –
これはすべてのpyxファイルを1つのモジュールとして扱います(つまり、すべてのシンボルを1つの名前空間に入れます)? –