在python中有些库是用.pyx文件写的,这个如果之间import就会报错找不到模块,因为这是与C混合编写的外部库。
这需要经过编译才能导入。
并且导入之前一般需要加入如下代码:
import pyximport
pyximport.install()
但是如果不外部先编译的话一般会报错如下:
ImportError: Building module fairseq.data.data_utils_fast failed: ["distutils.errors.CompileError: command 'gcc' failed with exit status 1\n"]
那么就需要编写setup.py文件进行编译
文件内容大概如下:
from distutils.core import setup
from Cython.Build import cythonize
import numpy as np
setup(
name = 'data_module',
ext_modules=cythonize('data_utils_fast.pyx'),
include_dirs=[np.get_include()]
)
最后执行命令
python setup.py build_ext --inplace
最后会生成一个文件,保证文件与.pyx文件在同级目录下即可正常Import