它确实具有版本信息,只需使用
.version:
In [4]: pyodbc.versionOut[4]: '3.0.10'
pip show命令也可以为您提供:
In [54]: pip.main(["show","pyodbc"])---metadata-Version: 1.1Name: pyodbcVersion: 3.0.10Summary: DB API Module for ODBCHome-page: http://pre.google.com/p/pyodbcAuthor: Michael KleehammerAuthor-email: michael@kleehammer.comLicense: MITLocation: /usr/local/lib/python2.7/dist-packagesRequires: Classifiers: Development Status :: 5 - Production/Stable Intended Audience :: Developers Intended Audience :: System Administrators License :: OSI Approved :: MIT License Operating System :: Microsoft :: Windows Operating System :: POSIX Programming Language :: Python Programming Language :: Python :: 2 Programming Language :: Python :: 3 Topic :: DatabaseOut[54]: 0
您可以重定向标准输出并解析输出:
import pipimport sysif sys.version_info.major >= 3: from io import StringIOelse: from StringIO import StringIOdef get_version(package): f = StringIO() sys.stdout = f pip.main(["show", package]) sys.stdout = sys.__stdout__ return next((line.split(":", 1)[1].strip() for line in f.getvalue().splitlines() if line.startswith("Version")), "No match")但是更简单的方法是使用
pkg_resources,如果您查看show的源,您可以看到它是如何收集的:
from pip._vendor import pkg_resourcesdef get_version(package): package = package.lower() return next((p.version for p in pkg_resources.working_set if p.project_name.lower() == package), "No match")
要使用它,只需传递软件包名称:
In [57]: get_version("pyodbc")Out[57]: '3.0.10'In [58]: get_version("pandas")Out[58]: '0.17.1'In [59]: get_version("requests")Out[59]: '2.9.1'In [60]: get_version("foobar")Out[60]: 'No match'您可以使用与show命令类似的逻辑轻松地扩展它以获取不同的信息。



