运行 单元测试时 Cython 库的导入冲突

Import conflict for Cython library when running unittests

我正在开发一个用 C、Python 和 Cython 编写的 Python 库。 我之前只在 python 上编写过同一个库的测试,但现在需要编译该库才能导入它。

当我尝试在使用 python3 setup.py install 构建 unittest 文件后导入库时,我遇到 ImportError 指出无法导入 Cython 文件。

原因是因为它尝试导入的文件是尚未编译的文件。库已编译,但导入系统更喜欢同一项目目录下的文件,而不是来自 site-packages.

遇到这种情况我该怎么办?我希望能够 运行 在本地和 CI 上进行我的单元测试。

这是我的项目结构以及出现错误的地方:

lib-name:
    -lib-name/
        module.pyx
        main.py (imports module.pyx)
    -tests/
        test_lib_name.py (imports lib-name, raises ImportError because main.py can't import module.pyx)

谢谢!

在导入之前执行此操作(这样 lib 就不会从当前目录加载。):

sys.path.remove('')

导入后执行此操作(返回默认值):

sys.path.append('')