我有一个包含单个函数的script_function_cython.pyx文件:
import numpy as np
import scipy.misc as misc
import matplotlib.pyplot as plt
def my_function(img, kernel):
assert kernel.shape==(3, 3)
res = np.zeros(img.shape)
for i in range(1, img.shape[0]-1):
for j in range(1, img.shape[1]-1):
res[i, j] = np.sum(np.array([[img[i-1, j-1], img[i-1, j], img[i-1, j+1]],
[img[i, j-1], img[i, j], img[i, j+1]],
[img[i+1, j], img[i+1, j], img[i+1, j+1]]])*kernel)
return res
if __name__ == '__main__':
kernel = np.array([[-1, -1, -1], [-1, 3, -1], [-1, -1, -1]])
img = misc.face()[:256, :256, 0]
res = my_function(img, kernel)
plt.figure()
plt.imshow(res, cmap=plt.cm.gray)
我创建了一个setup.py文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize('script_function_cython.pyx'),
)
然后,我编译它:
python setup.py build_ext --inplace
安装它:
python setup.py install
但是,当我尝试进一步导入时,
import script_function_cython
我明白了:
ImportError: No module named script_function_cython
答案 0 :(得分:1)
使用n
版本,无需安装。您需要从项目目录导入。
--inplace
不应该引起错误。