- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在为 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)。
关于python 如何使用 imp.find_module 或者替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9881472/
根据imp.load_module文档,“调用方负责关闭文件参数”。“如果我将从imp.find_module返回到imp.load_module的文件对象,我仍然负责关闭文件对象吗?”或者帮我关上它
如何使用linux内核的find_module()功能? 文档说“必须持有 module_mutex”。 这是否意味着我应该获得 之前锁定我的模块代码 寻找指向另一个的指针? 当这个互斥锁被 非模块内
imp.find_module()没有从压缩的鸡蛋中找到模块。 如何找到可以来自两个地方的模块:目录或压缩的鸡蛋?在我的例子中,重要的是我可以提供一个 path 参数,比如 imp.find_modu
背景 当您使用命名空间包并将代码库划分到单独的文件夹中时,pylint 无法导入文件的问题让我感到厌烦。因此,我开始深入研究 astNG 源代码,它已被确定为问题的根源(请参阅 astng 上的错误报
我目前正在为 python 编写自动完成功能。因此我需要找到导入的模块。 使用 imp.find_module 似乎很容易,但如果我插入一个路径,它就不起作用,这对自动完成很重要。插入路径意味着它不会
是否有一个现有的 imp.find_module 的实现?适用于带点的模块名称?它不需要防弹,如果它在某些情况下不起作用也没关系。但它适用的案例越多越好。 请不要尝试在答案中实现此功能。我已经实现了我
我的一些代码使用现已弃用的 imp 包来查找模块 toolboxFile, toolboxPath, toolboxDescription = imp.find_module("Tools") 使用包
我是一名优秀的程序员,十分优秀!