模块如何获取在 python 中导入它的文件的路径?

How can a module get the path of the file that is importing it in python?

我有导入 module.py 的文件 app.py。我需要找出 app.py 的路径,例如:/home/user/app/app.py,它在同一个文件夹中工作正常但是当我从不同的文件夹调用 app.py 时,我的当前目录是 /home/user 我得到我的当前目录而不是 app.py 所在的目录。

这是module.py的内容。

os.getcwd() <-- 这returns我的工作路径

os.path.dirname(__file__) <-- 这个returns模块路径

最好的方法是什么?我有点卡住了,在 Google 上没有找到任何关于它的信息。

在您要导入的模块中使用以下代码行:

Module.py

import inspect

# Return the frame object for the caller's stack frame.
frame = inspect.currentframe()

# Get calling rame from list of all call frames.
calling_frame = inspect.getouterframes(frame)[1][0]

#Prints a traceback tuple.
print inspect.getframeinfo(calling_frame)

此外,您还可以尝试另一种技巧。我不会建议将它用于生产代码,但它只是为了好玩 :) :

1. Generate the exception in your module.
2. Catch it and find the Traceback.
3. Manipulate the Traceback according to you requirement.