查找使用pip安装的软件包版本

时间:2012-04-18 17:37:20

标签: python pip

使用pip,是否可以找出当前安装的软件包版本?

我知道pip install XYZ --upgrade,但我想知道是否有类似pip info XYZ的内容。如果不是,那么告诉我目前正在使用哪个版本的最佳方式是什么。

16 个答案:

答案 0 :(得分:796)

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 freezegrep可以很好地完成工作。

$ pip freeze | grep Jinja2
Jinja2==2.7.3

答案 1 :(得分:62)

我刚刚发送了一个拉取请求,其中包括增强版Hugo Tavares说:

(例如specloud)

$ pip show specloud

Package: specloud
Version: 0.4.4
Requires:
nose
figleaf
pinocchio

答案 2 :(得分:40)

Pip 1.3现在也有一个list命令:

$ pip list
argparse (1.2.1)
pip (1.5.1)
setuptools (2.1)
wsgiref (0.1.2)

答案 3 :(得分:33)

并使用--outdated作为额外参数,您将获得正在使用的软件包的当前版本和最新版本:

$ pip list --outdated
distribute (Current: 0.6.34 Latest: 0.7.3)
django-bootstrap3 (Current: 1.1.0 Latest: 4.3.0)
Django (Current: 1.5.4 Latest: 1.6.4)
Jinja2 (Current: 2.6 Latest: 2.8)

结合AdamKG的回答:

$ pip list --outdated | grep Jinja2
Jinja2 (Current: 2.6 Latest: 2.8)

同时检查 pip-tools https://github.com/nvie/pip-tools

答案 4 :(得分:18)

您也可以安装yolk,然后运行yolk -l,这也会提供一些不错的输出。这就是我为我的小家伙所得到的:

(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 

答案 5 :(得分:8)

您可以使用grep命令查找。

pip show <package_name>|grep Version

示例:

pip show urllib3|grep Version

仅显示版本。

  

元数据 - 版本:2.0
  版本:1.12

答案 6 :(得分:7)

最简单的方法是:

import jinja2
print jinja2.__version__

答案 7 :(得分:4)

在Windows上,您可以发出如下命令:

Built-in SSH

输出:

[IntelliJ - File - Settings - Version Controll - Git] 

You can change 'SSH executable' from 'Build-in' to 'Native'.

答案 8 :(得分:2)

对于Windows,您可以

  1. 打开cmd并输入python,按回车键。

  2. 输入导入并按Enter键。

  3. 输入._version__并按回车。

  4. 正如您在屏幕截图中看到的那样,我使用此方法检查串行模块的版本。

    Image

答案 9 :(得分:2)

There's also a tool称为pip-check,可让您快速概述所有已安装的软件包及其更新状态:

enter image description here

我自己没有使用过;只是偶然发现了这个问题,然后很快就问了这个问题,因为没有提及...

答案 10 :(得分:2)

要使用Python代码执行此操作:

使用importlib.metadata.version

Python≥3.8

import importlib.metadata
importlib.metadata.version('beautifulsoup4')
'4.9.1'

Python≤3.7

(使用importlib_metadata.version

!pip install importlib-metadata

import importlib_metadata
importlib_metadata.version('beautifulsoup4')
'4.9.1'

使用pkg_resources.Distribution

import pkg_resources
pkg_resources.get_distribution('beautifulsoup4').version
'4.9.1'
pkg_resources.get_distribution('beautifulsoup4').parsed_version
<Version('4.9.1')>

sinoroc mirekphd 授予评论。

答案 11 :(得分:1)

有问题的是,没有提到哪个OS用户正在使用(Windows / Linux / Mac)

有两个答案可以在Mac和Linux上正常使用。

下面的命令可以用于用户试图在Windows上查找python软件包的版本的情况。

在PowerShell中,使用以下命令:

pip list | findstr <PackageName>

示例:-pip list | findstr requests

输出:requests 2.18.4

答案 12 :(得分:1)

python函数仅以机器可读格式返回软件包版本:

from importlib_metadata import version 
pkg_name='Flask-Caching'
version(pkg_name)
>>> '1.8.0'

bash等效项(这里也从python调用)会更加复杂:

import subprocess
def get_installed_ver(pkg_name):
    bash_str="pip freeze | grep -w %s= | awk -F '==' {'print $2'} | tr -d '\n'" %(pkg_name)
    return(subprocess.check_output(bash_str, shell=True).decode())

样品用量:

# pkg_name="xgboost"
# pkg_name="Flask"
# pkg_name="Flask-Caching"
pkg_name="scikit-learn"

print(get_installed_ver(pkg_name))
>>> 0.22

请注意,在两种情况下,pkg_name参数都应以pip freeze返回的格式包含软件包名称,而不是import期间使用的软件包名称,例如scikit-learn不是sklearnFlask-Caching,不是flask_caching

请注意,虽然在bash版本中调用pip freeze似乎效率不高,但只有这种方法被证明具有足够的鲁棒性,可以打包命名特性和不一致之处(例如,下划线vs破折号,小写vs大写以及缩写,例如sklearn vs scikit学习)。

答案 13 :(得分:1)

pip show在python 3.7中有效:

pip show selenium
Name: selenium
Version: 4.0.0a3
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: c:\python3.7\lib\site-packages\selenium-4.0.0a3-py3.7.egg
Requires: urllib3
Required-by:

答案 14 :(得分:0)

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块的原因是,由于解析库名称以处理版本,因此很少有库名称会引发错误。即使packages变量将包含您环境中安装的所有库。

答案 15 :(得分:0)

pip list 也可以被告知将其输出格式化为 json。 解析版本可能是一种更安全的方法。

pip list --no-index --format=json | \
  jq -r '.[] | select(.name=="Jinja2").version'
# 2.10.1