Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当模块不存在时,如何从Python模块名获取路径?_Python_Python Import_Python Importlib - Fatal编程技术网

当模块不存在时,如何从Python模块名获取路径?

当模块不存在时,如何从Python模块名获取路径?,python,python-import,python-importlib,Python,Python Import,Python Importlib,如果模块存在,则按模块名获取python模块的文件系统路径很容易。例如: importlib.machinery.PathFinder.find_module('my.module').path 但是,当模块不存在时,我如何仍然能够获得用于检查模块是否存在的理论路径 背景:我希望看到文件系统在模块(由模块名指定,如导入语句中的模块名)出现时收到通知。Python使用它自己的path变量来知道在何处查找模块。path变量是一个列表,包含python从头到尾查找模块的所有目录。要查看它,您可以使用

如果模块存在,则按模块名获取python模块的文件系统路径很容易。例如:

importlib.machinery.PathFinder.find_module('my.module').path
但是,当模块不存在时,我如何仍然能够获得用于检查模块是否存在的理论路径


背景:我希望看到文件系统在模块(由模块名指定,如导入语句中的模块名)出现时收到通知。

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

import sys

print(sys.path)

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

这是否回答了您的问题?空字符串实际上表示工作目录。来自:“在程序启动时初始化时,此列表的第一项,
path[0]
,是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用,
path[0]
是空字符串,它将引导Python首先搜索当前目录中的模块。”(加上粗体)这就是我想说的。谢谢你的澄清,我将编辑答案。哦,这仍然不太正确。Python将尝试添加“包含脚本的目录”,但如果不能,就像在交互式会话中一样,它将添加空字符串。好的,现在,谢谢。谢谢。那么,我是否必须观察
sys.path
中的所有路径以递归方式进行更改?也许路径可以通过在每个路径后面附加模块名来变得更具体一些,其中点被
//code>替换。不能吗hat工作?有没有更好的方法,也许使用Python标准库中的现有函数?由于操作系统和内存限制,我希望文件监视程序尽可能少。