【问题标题】:How to get path from Python module name when module does not exist?模块不存在时如何从 Python 模块名称中获取路径?
【发布时间】:2020-12-13 21:08:27
【问题描述】:

如果模块存在,则通过模块名称获取 python 模块的文件系统路径很容易。比如这样:

importlib.machinery.PathFinder.find_module('my.module').path

但是当模块不存在时,我如何仍然得到用于检查模块是否存在的理论路径?

背景:我想观察文件系统在模块(由模块名称指定,如在 import 语句中指定)出现时得到通知。

【问题讨论】:

标签: python python-import python-importlib


【解决方案1】:

Python 使用它自己的path 变量来知道在哪里寻找模块。 path 变量是一个列表,其中包含 python 从头到尾查找模块的所有目录。要查看它,您可以使用sys 模块:

import sys

print(sys.path)

列表中的第一项是脚本的目录,除非您处于交互式会话中,在这种情况下将出现一个空字符串,表示当前工作目录。

【讨论】:

  • 空字符串实际上是工作目录。来自docs“在程序启动时初始化,此列表的第一项,path[0],是包含用于调用 Python 解释器的脚本的目录。如果脚本目录不可用, path[0] 为空字符串,指示 Python 先搜索当前目录中的模块。”(加粗)
  • 这就是我想说的。感谢您澄清它,我会编辑答案。
  • 哦,还是不太对。 Python 将尝试添加“包含脚本的目录”,但如果不能,例如在交互式会话中,然后它将添加空字符串。
  • 谢谢。那么,我是否必须以递归方式查看 sys.path 中的所有路径以进行更改?也许可以通过在每个路径上附加模块名称来使路径更加具体,其中点被替换为/。那行得通吗?有没有更好的方法,也许使用 Python 标准库中的现有函数?由于操作系统和内存限制,我想要尽可能少的文件观察程序。
猜你喜欢
  • 1970-01-01
  • 2021-12-25
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多