2016-08-10 5 views
2

Hintergrund: Möchten Sie eine Dokumentation für ein Paket erstellen, das eine C-Erweiterung relativ importiert, z. in einem __ init__.py. Nehmen wir an, dieses Paket heißt mypkg. Also c_ext befindet sich in sub.Python 2.7 Schein relativer Import

init.py von sub:

from __future__ import absolute_import 
from . import c_ext 

Als ich verspotten diese Erweiterung ich folgendes tun in meiner Sphinx conf.py:

from mock import Mock 
sys.modules['mypkg.sub.c_ext'] = Mock() 

Jedoch habe ich noch einen Importfehler erhalten:

Die lustige Sache ist, dass die gleiche Sache auf Python3 funktioniert (die ein etwas anderes Importverhalten hat).

Alle Hinweise erwünscht!

Antwort

0

Es stellt sich heraus, dass man C-Erweiterungen unter Python-2.7 nicht vortäuschen kann, wenn sie relativ importiert werden. Ich habe daran gearbeitet, indem ich einen Meta-Pfad-Hook verwendet habe, um nur diese Erweiterungen zu patchen.