pycharmのpythonファイルにコンパイル済みのcythonファイルをインポートするにはどうすればよいですか?PythonファイルのCythonクラスをインポートするPycharm
これは私の設定です。
私のプロジェクトのルートディレクトリから、cythonクラスは "/classes/knn.cpython-35m-x86_64-linux-gnu.so"です。私のpythonファイルは "/classes/testing_cython_knn.py"です。
私はしかし、Pycharmは私がインポートできるファイルとして ".soは" ファイルを認識しない
... "/クラス/" で "__init __.py" ファイルを持っています。このファイルをインポートできるようにするためには何が必要なのですか?テストすることができますか?
現在、私は正常にコンパイルし、定期的に、端末ベースのpythonで「helloworld.so」ファイルをインポートしている...しかし、私は定義された関数は、ニシキヘビ機能...ないC-ものでした。
私Cythonicファイルは次のとおりです。
import numpy as np
cimport numpy as np
from scipy.stats import mode
from scipy.spatial.distance import cdist
from threading import Thread
cdef class KNN:
cdef public int k
cdef public str metric
cdef public np.ndarray trainingX
cdef public np.ndarray trainingY
cdef public np.ndarray predict(self,np.ndarray X):
cdef np.ndarray distances,predicted_classes,sorted_distance_indices
distances = cdist(X,self.trainingX,metric=self.metric)
predicted_classes = np.zeros(X.shape[0],dtype=np.float64)
sorted_distance_indices = np.argpartition(distances,self.k,axis=1)[:,:self.k]
predicted_classes,_ = mode(self.trainingY[sorted_distance_indices])
return predicted_classes
そしてsetup.py:
:Dynamic module does not define module export function (PyInit_knn)
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
import numpy
extensions = [
Extension("knn",["cKNN.pyx"]),
Extension("*",["*.pyx"],include_dirs=[numpy.get_include()])]
setup(ext_modules = cythonize(extensions),include_dirs=[numpy.get_include()])
現在のところ、これはインポートエラーと端末上で実行されているのpythonへのインポートに失敗します
おそらく最初に式からPyCharmを削除するのが最善です...コマンドラインからPythonを実行するときにインポートを実行できますか? –
私はhelloworld.soを持っていて、ターミナルでPythonでインポートします。私がクラスをインポートしたときに(昨日cythonを調べ始めたばかり)、importError:動的モジュールがモジュールのエクスポート関数(PyInit_knn)を定義していません。 – bordeo