Skip to main content
 首页 » 编程设计

python 如何使用 imp.find_module 或者替代

2025年05月04日12lexus

我目前正在为 python 编写自动完成功能。因此我需要找到导入的模块。

使用 imp.find_module 似乎很容易,但如果我插入一个路径,它就不起作用,这对自动完成很重要。插入路径意味着它不会找到系统模块。

解决方案是获取 PYTHONPATH,然后将其插入。但这确实不是一个好方法,因为我只想要默认路径。此外,PYTHONPATH 甚至不在我的 os.environ[] 中。

除了这个复杂的程序真的没有其他选择吗?如果没有,我如何获得库的默认路径?

是否有更好的解决方案,自动爬取目录?

注意:由于我正在编写自动完成功能,所以我不想实际导入/执行任何代码。

请您参考如下方法:

要获取标准库的路径,请使用:

>>> import sys 
>>> sys.path 
['', '/usr/lib/python27.zip', '/usr/lib/python2.7', ...] 

使用这些路径,您可以使用 os.listdir 搜索它们,例如:

import sys, os  
standardlib = os.listdir(sys.path[n]) 

如果你检查路径是否是一个目录,你将有检查。

stdlibs = [] 
for lib in sys.path: 
    if os.path.isdir(lib):  
        for module in os.listdir(lib): 
            stdlibs.append(lib + "/" + module) 

您可能必须递归地检查它并检查扩展。

这会让您知道从哪里开始。

您还必须检查您的当前目录 (os.getcwd()) 以查找可以作为包一部分的文件 (python package structure)。