I have a project organized as follows:
project
├── project
│ ├── module1
│ │ ├── api.py
│ │ ├── _cpython_foo.py
│ │ └── _cython_foo.pyx
│ └── module2
├── setup.py
└── tests
└── module1
├── test_cython_foo.py
└── test_cpython_foo.py
where api.py imports cythonized extensions:
"""api.py""""
from _cython_foo import cython_fun
My setup script builds the .pyx source inplace correctly and I'm able to use cython_fun in the installed package:
import project.module1.api as module1
module1.cython_fun() # OK
However, pytest complains that it cannot import the cython module since the compiled binaries are not in place until I invoke setup.
project/module1/api.py:2: in <module>
from _cython_foo import cython_fun
E ImportError: No module named _cython_foo
It seems like bad style to leave a bunch of precompiled binaries inside my project directory that pytest depends on, so is there a conventional way to have pytest temporarily build the cython modules for the purpose of my unit tests only?
Aucun commentaire:
Enregistrer un commentaire