How do I import function from .pyx file in python?
I'm trying to run Hadoopy, which has a file _main.pyx, and import _main
is failing with module not found in __init__.py.
I'm trying to run this on OS X w/ standard开发者_C百科 python 2.7.
Add this code before you try to import _main
:
import pyximport
pyximport.install()
Note that pyximport
is part of Cython, so you'll have to install that if it isn't already.
You need to make sure you have followed all steps:
Install the Cython package using
pip
pip install Cython
Create a Cython file
bbox.pyx
cimport cython import numpy as np cimport numpy as np DTYPE = np.float32 ctypedef np.float32_t DTYPE_t @cython.boundscheck(False) def compare_bboxes( np.ndarray[DTYPE_t, ndim=2] boxes1, np.ndarray[DTYPE_t, ndim=2] boxes2): ...
Create
setup.py
in the same directoryfrom distutils.core import setup, Extension from Cython.Build import cythonize import numpy package = Extension('bbox', ['bbox.pyx'], include_dirs=[numpy.get_include()]) setup(ext_modules=cythonize([package]))
Build the Cython
python3 setup.py build_ext --inplace
Create your main python script
run.py
in the same directoryimport pyximport pyximport.install(setup_args={"script_args" : ["--verbose"]}) from bbox import compare_bboxes def main(args): boxes1 = args.boxes1 boxes2 = args.boxes2 result = compare_bboxes(boxes1, boxes2)
Run your main script in the same directory
python run.py
精彩评论