由gitci调用时由于VTK导入错误导致Pytest失败,但直接调用时不会

问题描述

我们有一台运行 gitlab runner 版本 13.4.1 的 Windows 10 机器。我们的 repo 已经配置了一个 gitlab-ci yml 文件,该文件构建了一个新的 conda 环境(包括 vtk 8.1.0 版),然后在该环境中运行 pytest 单元测试。

直到几天前,这还可以正常工作。最近我们所有的管道都收到了相同错误的某些版本:

ImportError while importing test module 'C:\path\to\test.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
C:\path\to\virtualenv\lib\site-packages\vtk\vtkCommonCore.py:5: in <module>
    from .vtkCommonCorePython import *
E   ImportError: DLL load Failed: The specified module Could not be found.

During handling of the above exception,another exception occurred:
C:\path\to\virtualenv\gitci-env\lib\importlib\__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:],package,level)
Tests\test.py:4: in <module>
    import vtk
C:\path\to\virtualenv\lib\site-packages\vtk\__init__.py:7: in <module>
    from .vtkCommonCore import *
C:\path\to\virtualenv\lib\site-packages\vtk\vtkCommonCore.py:9: in <module>
    from vtkCommonCorePython import *
E   ModuleNotFoundError: No module named 'vtkCommonCorePython'
=========================== short test summary info ===========================
ERROR Tests\test.py

其他值得注意的地方:

  • 如果在 powershell 中调用虚拟环境并且在那里运行单元测试,则不会发生此错误。它只能通过 gitlab-ci 管道进行复制。
  • 如果运行一个简单的 assert True 单元测试,它将通过 gitlab-ci。如果修改为import vtk,就会失败
  • 在服务器上创建命名环境并更新 yml 文件以使用该现有环境而不是创建新环境并不能解决该行为。
  • 机器重启没有解决问题

有人知道为什么会发生这种情况或如何解决吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)