背景:想要为一个包构建一个文档,它可以相对导入一个C-extension,例如。在__ init__.py中。让我们假设这个包叫做mypkg.sub。所以c_ext位于sub。
sub的sub.py:
from __future__ import absolute_import
from . import c_ext
当我模拟这个扩展时,我在我的Sphinx conf.py中执行以下操作:
from mock import Mock
sys.modules['mypkg.sub.c_ext'] = Mock()
但是我仍然遇到导入错误:
ImportError:无法导入名称c_ext
有趣的是,同样的东西适用于Python3(导入行为略有不同)。
任何提示都赞赏!
答案 0 :(得分:0)
事实证明,如果它们是相对导入的,则不能在Python-2.7下模拟c扩展。我通过使用meta_path钩子来修补这些扩展来解决这个问题。