2011-05-05 11 views
6

Deseo obtener la ubicación de un paquete antes de importarlo. Básicamente me gustaría hacerDeterminación de la ubicación del paquete Python antes de la importación

import pkg 
pkg_path = pkg.__file__ 

pero sin tener que import pkg. En este momento estoy haciendo:

target = "pkg" 
target_path = None 
for p in sys.path: 
    search_path = "%s/%s" % (p, target) 
    if os.path.exists(search_path): 
     target_path = search_path 

pero hay varios escenarios en los que esto no va a trabajar (target no contiene __init__.py, target está dentro de un archivo comprimido EGG).

¿Hay alguna forma mejor de obtener target_path?

Gracias,

Ian

Respuesta

0

Puede utilizar [__import__()][1] de la siguiente manera:

target_path = __import__('pkg').__file__ 

__import__() es utilizado por import y uno de su uso es cuando th El nombre del módulo solo se conoce en el tiempo de ejecución.

Cuestiones relacionadas