目标是为使用 Cython 的 Python3 项目使用 pytest 单元测试框架。这不是即插即用的事情,因为默认情况下 pytest 无法导入 Cython 模块。也就是说,从 Cython .pyx 模块导入时出现以下错误,在我的例子中名为“calculateScore”:
package/mainmodule.py:5: in <module>
from calculateScore import some_functions
E ImportError: No module named 'calculateScore'
使用时都会出现此问题pytest 运行程序 https://stackoverflow.com/questions/48330471/running-pytest-with-cython-how-to-compile-cython-modules-in-pytest以及pytest cython https://pypi.python.org/pypi/pytest-cython方法。奇怪的是,当你不尝试使用它来测试代码时,代码可以像 python 应用程序一样运行良好pytest
。
将导入样式更改为import calculateScore
or import package.calculateScore
没有帮助。
我不知道为什么会发生这种情况,但对我来说最简单的解决方案是使用pytest-cython
方法并更改包中下面列出的一项或多项内容setup.py
file:
- 当定义你的
Extension
为了ext_modules
包括 Cython.pyx
文件,做not use distutils.extension.Extension
而是使用setuptools.Extension
我手动创建的原因Extension
而不是使用Cython.Build.cythonize
功能,在这里并不重要。但请注意,对于pytest-runner
方法:
- do not使用
cythonize
函数,但手动创建扩展
写完这篇文章后,我什至无法使用以下命令重现该问题pytest-cython
不再,这表明问题的原因可能是其他原因。您可以尝试的另一件事是确保:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)