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

如何在Python中获取导入模块(包括默认模块)的文件名?,python,python-module,Python,Python Module,一点背景:我正在尝试创建一个模块,它可以安全地将自身和所有其他必需的文件复制到另一个位置 假设我有两个模块 a、 py: b、 py: 当a.py将输出 C:/path/to/code/a.py C:\path\to\code\b.py 问题:如果有的话,我如何获取其他导入模块(如os.py)或任何没有此getfile函数的模块的路径?您可以通过 module_name.__file__ 如 正如评论中所指出的,这对于某些内置模块(如来自解释器核心的sys)不起作用。您可以通过 module

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

假设我有两个模块

a、 py:

b、 py:

当a.py将输出

C:/path/to/code/a.py
C:\path\to\code\b.py
问题:如果有的话,我如何获取其他导入模块(如os.py)或任何没有此getfile函数的模块的路径?

您可以通过

module_name.__file__

正如评论中所指出的,这对于某些内置模块(如来自解释器核心的sys)不起作用。

您可以通过

module_name.__file__

正如评论中所指出的,这对于某些内置模块(如来自解释器核心的sys)不起作用。

您可以使用:

import os
print(os.__file__)
您可以使用:

import os
print(os.__file__)

注意:这对某些内置模块不起作用,例如sys,因为它们后面实际上没有一个文件,它们被烘焙到解释器核心中。尽管如此,我还是投了赞成票;对于时髦的模块,您只需捕获AttributeError,并以某种有意义的方式处理它,因为没有支持它的文件。注意:这对某些内置模块不起作用,例如sys,因为它们后面实际上没有一个文件,它们被烘焙到解释器核心中。尽管如此,我还是投了赞成票;对于时髦的模块,您只需捕获AttributeError并以某种方式处理它,因为没有支持它的文件。是的!那就行了,很有意义。无论出于什么原因,我一直在使用的IDE在输入模块名后没有列出这一点。是否有任何方法可以迭代获取所有导入模块的文件名,即查找导入模块的列表?我想问另一个问题,但首先确保您进行搜索以确保尚未询问:是的!那就行了,很有意义。无论出于什么原因,我一直在使用的IDE在输入模块名后没有列出这一点。是否有任何方法可以迭代获取所有导入模块的文件名,即查找导入模块的列表?我想问另一个问题,但首先确保您进行搜索以确保尚未询问该文件名:
import os
print(os.__file__)