确定给定Python模块是否是标准库的一部分

确定给定Python模块是否是标准库的一部分,python,module,standard-library,Python,Module,Standard Library,如何确定Python模块是否是标准库的一部分? 换句话说:是否存在与perl的corelist实用程序相当的Python 我会用它来设定我对开发期间可移植性的期望。 如果它依赖于实现,我对CPython感兴趣 到目前为止,我找到的最佳答案是: 即在Python标准库文档的索引页上搜索模块名:。但是,这比使用实用程序更不方便,也不会告诉我有关最低要求版本的任何信息。当使用setuptools安装脚本(setup.py)时,可以测试所需的模块,并更新安装依赖项列表以添加Backport(如果需要)

如何确定Python模块是否是标准库的一部分? 换句话说:是否存在与perl的corelist实用程序相当的Python

我会用它来设定我对开发期间可移植性的期望。 如果它依赖于实现,我对CPython感兴趣

到目前为止,我找到的最佳答案是:


即在Python标准库文档的索引页上搜索模块名:。但是,这比使用实用程序更不方便,也不会告诉我有关最低要求版本的任何信息。

当使用setuptools安装脚本(
setup.py
)时,可以测试所需的模块,并更新安装依赖项列表以添加Backport(如果需要)

例如,假设您需要
collections.OrderedDict
类。文档中说它是在Python2.7中添加的,但是它是一个可以在Python2.4及更高版本上工作的。在
setup.py
中测试类在
集合中是否存在。如果导入失败,请将backport添加到您的需求列表中:

from setuptools import setup

install_requires = []

try:
    from collections import OrderedDict
except ImportError:
    install_requires.append('ordereddict')

setup(
    # ...
    install_requires=install_requires
)
然后在您需要的代码中使用相同的测试:

try:
    from collections import OrderedDict
except ImportError:
    # use backported version
    from ordereddict import OrderedDict
并依靠
pip
easy\u install
zc.buildout
或其他安装工具为您获取额外的库

许多最近添加的核心库都有可用的后端口,包括
json
(称为
simplejson
)、
argparse
sqlite3
pysqlite
包,使用来自pysqlite2的
导入dbapi作为sqlite3
作为后备)


您仍然需要阅读文档;Python文档非常优秀,对于新的模块、类、方法、函数或参数,文档在添加它们的Python版本中明确提到了它们。

您应该阅读模块的文档。你说你想要一个实用工具,因为阅读文档很不方便。但你是针对模块编码的?无论如何,你应该花一点时间阅读本例中的文档,除非你只是简单地通过粘贴在线找到的神秘片段来制作一个弗兰肯斯坦怪兽

你不会使用几十个模块,你可以花一点时间阅读文档。另外,一般来说,这些文档确实提到了Python的哪个版本引入了它们


文档很好:使用它们。

请注意,只有在使用特定设置编译Python时,才会出现某些模块,例如,如果在未安装sqlite头的机器上编译Python,则解释器将不支持sqlite,即使该模块是自Python 2.5以来标准库的一部分。因此,在某些情况下,这可能有点棘手。