Tengo la siguiente estructura de código:

config_dir
    config.py

main.py

Hay un método en config.py como el siguiente:

def get_path():
    # TODO 
    return "the absolute path of config.py, not the path of the main.py that import this config module"

En main.py, importo el módulo de configuración y llamo al método de configuración get_path

from config_dir import config

print(config.get_path())

Me gustaría imprimir la ruta absoluta de config.py, no la ruta de main.py que importa este módulo de configuración

Me gustaría codificar esto, ¡gracias!

0
Tom 28 may. 2020 a las 09:21

3 respuestas

La mejor respuesta

Prueba el siguiente código:

import os
os.path.abspath(config)

Edit-1 (créditos: Milan Cermak)

Agregue el siguiente código en config.py


import os

def get_path():
    return os.path.abspath(__file__)
1
dexter 28 may. 2020 a las 06:29

Puede usar el archivo para obtener la ruta absoluta para el módulo importado. Por ejemplo:

from config_dir import config

print(config.__file__)
>>> import datetime
>>> datetime.__file__
'/usr/local/Cellar/python@2/2.7.17/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/datetime.so'
>>> 
2
Lennon liu 28 may. 2020 a las 06:27

Puede utilizar esto:

import os

def get_path():
    return os.path.abspath(__file__)
2
Milan Cermak 28 may. 2020 a las 06:27