栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如果未设置__version__变量,如何检查python软件包的版本

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如果未设置__version__变量,如何检查python软件包的版本

它确实具有版本信息,只需使用

.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命令类似的逻辑轻松地扩展它以获取不同的信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号