如何在Python3.11中找到“os”模块文件路径而不导入?

5jdjgkvh  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(157)

我可以这样得到'os.py'的路径:

import os
os.__file__

但是不导入它怎么能得到它呢?我找到了this relevant question,但是这些都不适用于Python3.11,尽管它们适用于Python〈=3.10。
新引入的Python3.11优化(doc)似乎打破了这些解决方案。

zzwlnbp8

zzwlnbp81#

这对我来说很有效(尽管看起来resolve_name实际上导入了模块):

>>> osp = pkgutil.resolve_name("os")
>>> osp.__file__
'/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/os.py'

>>> from importlib.util import find_spec
>>> spec = find_spec('os')
>>> spec.loader_state.filename
'/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/os.py'

相关问题