Alternativas a imp.find_module?

Fond

Me cansé del problema con que pylint no puede importar archivos cuando usa paquetes de espacio de nombres y divide su base de código en carpetas separadas. Como tal, comencé a cavar en el código fuente astNG que se ha identificado como la fuente del problema (vea el informe de errores 8796 en astng). En el corazón del problema parece estar el uso de las propias pitonesimp.find_module en el proceso de encontrar importaciones.

Lo que sucede es que el primer (sub) paquete de importación -a inimport a.b.c - se alimenta afind_module con unNone camino. Cualquier camino que regrese se alimenta afind_module el próximo paso en el bucle de búsqueda donde intentas encontrarb en el ejemplo anterior.

Pseudocódigo de logilab.common.modutils:

path = None
while import_as_list:
      try:
           _, found_path, etc = find_module(import_as_list[0], path)
      #exception handling and checking for a better version in the .egg files
      path = [found_path]
      import_as_list.pop(0)
El problem

Esto es lo que está roto: solo obtienes el primer mejor golpe defind_module, que puede tener o no sus subpaquetes. Si NO encuentra los subpaquetes, no tiene forma de retroceder y probar el siguiente.

Traté de usar explícitamente sys.path en lugar de None, para que el resultado se pudiera eliminar de la lista de rutas y se hiciera un segundo intento, pero el buscador de módulos de Python es lo suficientemente inteligente como para que no tenga que haber una coincidencia exacta en el caminos, haciendo que este enfoque sea inutilizable, al mejor de mi conocimiento de todos modos.

Plea de ojos llorosos

¿Existe una alternativa a find_modules que devolveráTODO posibles coincidencias o tomar una lista de exclusión? También estoy abierto a soluciones completamente diferentes. Preferiblemente no parchear Python a mano, pero no sería imposible, al menos para una solución local.

(Advertencia: estoy ejecutando Python 2.6 y por razones de la política actual de la compañía no puedo actualizar, las sugerencias para p3k, etc., no se marcarán como aceptadas a menos que sea la única respuesta).

Respuestas a la pregunta(3)

Su respuesta a la pregunta