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 python 2.7.
The process of importing a function from a file in Python is similar to importing modules. You have to create two files. Next, insert the definition of the function in one file and call the function from another. Name the new file myfile.py and insert a function.
Python versions 3.3 and higher allow easy imports of modules in subdirectories of the current script's directory. If you're using a Python version lower than 3.3, you can follow the steps in Import a File in a Different Directory instead. Let's say we move mymodule.py to a subdirectory called subdir:
The import statement consists of the import keyword alongside the name of the module. Here we have created a class named GFG which has two methods: add () and sub (). Apart from that an explicit function is created named method () in the same python file.
Name the new file myfile.py and insert a function. Create the second file, in the same directory, let’s call it main.py, and import the file and make a function call. import myfile myfile.myfunction ('Hello World!')
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 directory
from 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 directory
import 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With