gpt4 book ai didi

python - 给定一个 Python 源文件的路径,我如何找到该文件属于哪个包?

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:20 25 4
gpt4 key购买 nike

给定一个文件路径,我需要将包名称传递给 importlib.import_module(),这样相对导入才能正常工作。我无法导入它然后检查 module.__package__ 因为它不会成功导入。

最佳答案

这是一个相当通用的方法:

import pathlib
import sys


def get_module_name(path):
f = pathlib.Path(path).resolve()
for i in map(pathlib.Path, sys.path):
try:
f.relative_to(i)
except ValueError:
pass
else:
*parts, fname = f.relative_to(i).parts
return ".".join(parts), [f.stem]

module, fromlist = get_module_name("Programming/Python/kernprof.py")

print(module, fromlist)

imported_module = __import__(module, fromlist=fromlist)

print(imported_module)
print(getattr(imported_module, fromlist[0]))

输出:

Programming.Python ['kernprof']
<module 'Programming.Python' (namespace)>
<module 'Programming.Python.kernprof' from '/home/matthew/Programming/Python/kernprof.py'>

此解决方案可以处理从 sys.path 中的任何路径导入,但不能进行相对导入(在 sys.path 上方导入)。 __import__ 的使用方法,参见Why does Python's __import__ require fromlist? .

关于python - 给定一个 Python 源文件的路径,我如何找到该文件属于哪个包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29826934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com