2015-09-15 20 views
8

Sto cercando di documentare un progetto Python con ReadTheDocs. Inizialmente, il processo di generazione sarebbe morto quando ha ottenuto a:Mock con sottomoduli per ReadTheDocs

from osgeo import gdal, osr 

Ho letto l'rtd faq e utilizzato finto per il modulo di OSGeo che mi stava dando problemi. Ora il processo di compilazione rende passato che l'importazione, ma soffoca il:

from osgeo.gdalconst import * 

Con questo errore piuttosto inutile:

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

Sono completamente nuovo di utilizzare finto ma credo che il problema è che è osgeo un modulo finto e quindi non ha il modulo gdalconst. Come faccio ad aggirarlo? C'è un modo per deridere anche il sottomodulo?

risposta

6

Un po 'in ritardo ... ma mi sono imbattuto in questa ricerca di una soluzione (utilizzando moduli nidificati con mock). Ho preso in giro moduli e sottomoduli come questo:

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

dove l'ordine importava. Spero che questo aiuti chiunque altro a cercare di risolvere questo.