Zkusil jsem použít iteraci přes rámce:
MODUL: proSOURCE.py
import sys
def getFILE(FRAME=None,OLD=None):
try:
NEW = FRAME.f_code.co_filename
return NEW != OLD and OLD and NEW or getFILE(FRAME.f_back,NEW)
except AttributeError:
return getFILE(sys.exc_info()[2].tb_frame,None)
MAIN-Script : test.py
import proSOURCE
def main():
print proSOURCE.getFILE() #==> Vypíše <test.py> jako úplnou cestu
main()
Funguje:
v IDLE: execfile("test.py")
v Konzole: test.py
python test.py (...zde nevrátí úplnou cestu, takže nutno zachovat aktuální adresář)