获取导入模块的路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取导入模块的路径相关的知识,希望对你有一定的参考价值。

我有两个python文件:main.py和imported.py。我想将imported.py导入main.py但我想访问import.py文件中的main.py路径。那就是我想要访问导入模块的路径。例如:

#main.py
import imp
imported = imp.load_source('imported', "/absolute/path/to/imported.py")

#imported.py
pathToImportingModule=os.path.??? 
doSomethingWithPath(pathToImportingModule)
答案

我不知道任何“导入”通知挂钩。通过将函数显式调用到导入的模块中,您可以实现类似的功能:

#main.py
import imp
import sys
import os

imported = imp.load_source('imported', "/absolute/path/to/imported.py")
imported.doSomething(os.path.abspath(sys.modules[__name__].__file__))

#imported.py
def doSomething(importing_path):
   print ("Importing path: ", importing_path)
   pass
另一答案

来自ekhumoro的评论中收到的解决方案:

#main.py
import imp
imported = imp.load_source('imported', "/absolute/path/to/imported.py")


#imported.py
pathToImportingModule=os.path.abspath(sys.modules['__main__'].__file__)    
doSomethingWithPath(pathToImportingModule)

以上是关于获取导入模块的路径的主要内容,如果未能解决你的问题,请参考以下文章

获取导入模块的文件路径

Python Importlib.import_module动态导入模块

查找导入模块的绝对路径

有没有办法在 Go 代码中获取 Go 模块的完整路径 [关闭]

跨目录导入模块

Part5-1-2 Nodejs 核心模块