使用pip,是否有可能找出当前安装的软件包的哪个版本?
我知道pip安装XYZ -升级,但我想知道是否有类似pip信息XYZ的东西。如果不是什么最好的方式来告诉我目前使用的版本。
使用pip,是否有可能找出当前安装的软件包的哪个版本?
我知道pip安装XYZ -升级,但我想知道是否有类似pip信息XYZ的东西。如果不是什么最好的方式来告诉我目前使用的版本。
当前回答
这里没有提到用户使用的是哪种操作系统(Windows/Linux/Mac)
因为有几个答案将完美地工作在Mac和Linux。
如果用户试图在windows上查找python包的版本,可以使用下面的命令。
在PowerShell中使用以下命令:
皮普名单| findstr < PackageName >
示例:- pip list | findstr requests
输出:请求2.18.4
其他回答
在pip 1.3中,有一个pip show命令。
$ pip show Jinja2
---
Name: Jinja2
Version: 2.7.3
Location: /path/to/virtualenv/lib/python2.7/site-packages
Requires: markupsafe
在旧版本中,pip freeze和grep可以很好地完成这项工作。
$ pip freeze | grep Jinja2
Jinja2==2.7.3
你也可以安装蛋黄,然后运行蛋黄-l,这也会得到一些不错的输出。以下是我为我的小virtualenv得到的:
(venv)CWD> /space/vhosts/pyramid.xcode.com/venv/build/unittest
project@pyramid 43> yolk -l
Chameleon - 2.8.2 - active
Jinja2 - 2.6 - active
Mako - 0.7.0 - active
MarkupSafe - 0.15 - active
PasteDeploy - 1.5.0 - active
Pygments - 1.5 - active
Python - 2.7.3 - active development (/usr/lib/python2.7/lib-dynload)
SQLAlchemy - 0.7.6 - active
WebOb - 1.2b3 - active
account - 0.0 - active development (/space/vhosts/pyramid.xcode.com/project/account)
distribute - 0.6.19 - active
egenix-mx-base - 3.2.3 - active
ipython - 0.12 - active
logilab-astng - 0.23.1 - active
logilab-common - 0.57.1 - active
nose - 1.1.2 - active
pbkdf2 - 1.3 - active
pip - 1.0.2 - active
pyScss - 1.1.3 - active
pycrypto - 2.5 - active
pylint - 0.25.1 - active
pyramid-debugtoolbar - 1.0.1 - active
pyramid-tm - 0.4 - active
pyramid - 1.3 - active
repoze.lru - 0.5 - active
simplejson - 2.5.0 - active
transaction - 1.2.0 - active
translationstring - 1.1 - active
venusian - 1.0a3 - active
waitress - 0.8.1 - active
wsgiref - 0.1.2 - active development (/usr/lib/python2.7)
yolk - 0.4.3 - active
zope.deprecation - 3.5.1 - active
zope.interface - 3.8.0 - active
zope.sqlalchemy - 0.7 - active
我刚刚在pip中发送了一个增强的拉请求Hugo Tavares说:
(以云为例)
$ pip show specloud
Package: specloud
Version: 0.4.4
Requires:
nose
figleaf
pinocchio
还有一个叫做pip-check的工具,它可以让你快速浏览所有安装的包及其更新状态:
我自己没用过;只是偶然发现了这个SO问题,因为它没有被提及……
import pkg_resources
packages = [dist.project_name for dist in pkg_resources.working_set]
try:
for count, item in enumerate(packages):
print(item, pkg_resources.get_distribution(item).version)
except:
pass here
这些凹痕可能并不完美。我使用Try- Except块的原因是,由于解析库名来处理版本,很少有库名会抛出错误。即使包变量将包含安装在您的环境中的所有库。