模拟 ReadTheDocs 的子模块

Mock with submodules for ReadTheDocs

我正在尝试使用 ReadTheDocs 记录一个 Python 项目。最初,构建过程会在到达以下位置时终止:

from osgeo import gdal, osr

我已经阅读了 rtd faq 并对给我带来麻烦的 osgeo 模块使用了 mock。现在构建过程通过了导入但阻塞了:

from osgeo.gdalconst import * 

由于这个无用的错误:

RuntimeError: sys.path must be a list of directory names

我对使用模拟完全陌生,但我认为问题在于 osgeo 是一个模拟模块,因此没有子模块 gdalconst。我该如何解决这个问题?还有办法模拟子模块吗?

有点晚了……但我 运行 正在寻找解决方案(使用 mock 的嵌套模块)。我像这样模拟模块和子模块:

MOCK_MODULES = ['dbs', 'dbs.apis', 'dbs.apis.dbsClient']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)

顺序很重要。希望这可以帮助其他任何想解决这个问题的人。