python - 如何从 Python 脚本中列出 Python 可用的所有包/模块?

标签 python package

我环顾四周,没有找到解决方案。我想做的是在运行时获取 Python 中所有可用包的列表。

我看了这些:

但它们不是我要找的。

我试图这样做:

import pkgutil
for pkg in pkgutil.walk_packages():
    print(pkg)  # or do something with them...

但是,当我做 this :

import sys
sys.modules.keys()​​​

看来我已经加载了所有不是我想做的包,我想要的是当前 Python 安装可用的所有包+模块的字符串列表,而不加载它们一切都在我做的时候。

最佳答案

好吧,我很好奇,我深入研究了 pkgutil,然后我想到了这个,它比我预期的要简单得多:

list(pkgutil.iter_modules())

它列出了所有可用的顶级包/模块,无论是常规文件还是 zip 包,但不加载它们。它不会看到其他类型的包,除非它们正确地注册到 pkgutil 内部。

每个返回的条目都是一个包含以下项目的三元组:

  1. module_finder:找到模块的文件查找器实例
  2. name: 模块名称
  3. ispkg:一个 bool 值,指定它是常规模块还是包。

示例 3 元组:

(FileFinder('/usr/lib/python3/dist-packages'), 'PIL', True)

而且我可以确认这没有加载 PIL 包:

In [11]: sys.modules['PIL']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-11-b0fc0af6cc34> in <module>()
----> 1 sys.modules['PIL']

KeyError: 'PIL'

关于python - 如何从 Python 脚本中列出 Python 可用的所有包/模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752054/

相关文章:

java - Java : What's the difference between javax. 声音和 sun.audio 中的声音?

java - 如何在Eclipse的Gradle项目中重命名包

python - 使用 BeautifulSoup 下载图像

Python项目转换2.7到3.4

python - 如何仅检测列表中的连续重复元素?

android - 应用程序更新失败 - 证书不一致(..但不是真的)

npm - 如何查看npm包的大小?

golang 包导入失败

python - Hadoop:用Python代码处理图像文件

python - (flask)-sqlalchemy查询,必须导入所有模型