如何在 Python 中获取导入模块的文件名(包括默认值)?

How to get filename of imported modules (Including default) in Python?

一点上下文:我正在尝试创建一个可以安全地将自身和所有其他所需文件复制到另一个位置的模块。

假设我有两个模块。

a.py:

import b
import os
import tkinter

print(str(__file__))
print(str(b.getfile()))

b.py:

def getfile:
    return __file__

当a.py会输出

C:/path/to/code/a.py
C:\path\to\code\b.py

问题:如果有的话,我如何才能获得不同的导入模块(如"os.py")或没有此模块的任何模块的路径getfile()函数?

您可以通过

访问
module_name.__file__

import os
module_file_path = os.__file__

正如评论中所指出的,这不适用于某些内置模块,例如来自解释器核心的 sys

您可以使用:

import os
print(os.__file__)