PDi*_*lta 5 cython pytest python-3.x
目标是为使用 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'
Run Code Online (Sandbox Code Playgroud)
使用pytest-runner和pytest-cython方法时都会出现此问题。奇怪的是,当您不尝试使用pytest. 将导入样式更改为import calculateScore或import package.calculateScore没有帮助。
我不知道为什么会发生这种情况,但对我来说,最简单的解决方案是使用该pytest-cython方法并更改包setup.py文件中下面列出的一项或多项内容:
Extension包含ext_modulesCython.pyx文件时,不要使用而是distutils.extension.Extension使用setuptools.ExtensionExtension我手动创建而不是使用该函数的原因Cython.Build.cythonize在这里并不重要。但请注意,对于该pytest-runner方法:
cythonize功能,而是手动创建扩展写完这篇文章后,我什至无法再使用它来重现该问题pytest-cython,这表明也许其他原因是问题的原因。您可以尝试的另一件事是确保:
Extension为您的模块手动创建时.pyx,请确保其名称Extension与模块的名称相同(因此将其命名为“calculateScore”,而不是“package.calculateScore”)。
.so删除你的文件对应的编译文件.pyx然后重新运行。
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |