Derlenmiş bir cython dosyasını pycharm python dosyasında nasıl içe aktarılır?Python dosyasında Cython sınıfını içe aktarma Pycharm
İşte benim kurulumum.
Proje kök dizinimden, cython sınıfı "/classes/knn.cpython-35m-x86_64-linux-gnu.so" şeklindedir. Benim python dosyam "/classes/testing_cython_knn.py."
ben ... "/ sınıfları /" bir "__init __.py" dosyası varAncak pycharm ben alabileceğiniz bir dosya olarak ".bu" dosyasını tanımıyor. Bu dosyayı içe aktarılabilir yapmak için ne yapmam gerekiyor, bu yüzden test edebilirim?
Şu anda, başarıyla derlenmiş ve düzenli terminal tabanlı python "helloworld.so" dosyasını ithal var ... Ancak, ben tanımlanan fonksiyon pythonic işlev ... hiçbir C-şeyler oldu.
Benim Cythonic dosyasıdır:
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
Ve 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()])
Şu anda, bu bir ithalat Hata ile terminalde çalışan piton için ithalat başarısız
Belki PyCharm'ı denklemden çıkarmak en iyisidir ... Python'u komut satırından çalıştırdığınızda bir ithalat yapabilir misiniz? –
Tamam, terminalde python içe aktarmak için bir helloworld.so aldım. Sınıfımı aldığımda (anlayamadığın zaman, dün sthon'a bakmaya başladım), bir "importError: dinamik modül, modül dışa aktarma işlevini (PyInit_knn) tanımlamaz." – bordeo