我使用setuptools安装了Python模块construct和statlib:

sudo apt-get install python-setuptools

sudo easy_install statlib
sudo easy_install construct

如何从命令行检查它们的版本?


当前回答

对于未定义字段__version__的情况:

try:
    from importlib import metadata
except ImportError:
    import importlib_metadata as metadata # python<=3.7

metadata.version("package")

或者,就像之前提到的那样:

import pkg_resources
pkg_resources.get_distribution('package').version

其他回答

你可以试试这个:

pip list

这将输出所有包及其版本。

输出

在Python 3中用括号括起来的print:

>>> import celery
>>> print(celery.__version__)
3.1.14

这个答案是为Windows用户准备的。正如在所有其他答案中建议的那样,你可以这样使用语句:

import [type the module name]
print(module.__version__) # module + '.' + double underscore + version + double underscore

但是,有一些模块即使在使用上面的方法后也不打印它们的版本。所以,你可以简单地做:

Open the command prompt. Navigate to the file address/directory by using cd (file address) where you've kept your Python and all supporting modules installed. If you have only one Python interpreter on your system, the PyPI packages are normally visible in the directory/folder: Python → Lib → site-packages. use the command "pip install [module name]" and hit Enter. This will show you a message as "Requirement already satisfied: file address\folder name (with version)". See the screenshot below for example: I had to know the version of a pre-installed module named "Selenium-Screenshot". It correctly showed as 1.5.0:

更好的方法是:


获取特定包的详细信息

pip show <package_name>

它详细说明了package_name、版本、作者、位置等。


$ pip show numpy

Name: numpy
Version: 1.13.3
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: numpy-discussion@python.org
License: BSD
Location: c:\users\prowinjvm\appdata\local\programs\python\python36\lib\site-packages
Requires:

查看详细信息:>>> pip help


应该更新PIP以实现这一点。

pip install --upgrade pip

在Windows上,推荐的命令是:

python -m pip install --upgrade pip

我自己在一个受到严格限制的服务器环境中工作,不幸的是,这里的解决方案都不适合我。可能没有适合所有情况的全局解决方案,但我找到了一个快速的解决方案,即在脚本中读取pip freeze的终端输出,并将模块标签和版本存储在字典中。

import os
os.system('pip freeze > tmpoutput')
with open('tmpoutput', 'r') as f:
    modules_version = f.read()
  
module_dict = {item.split("==")[0]:item.split("==")[-1] for item in modules_versions.split("\n")}

通过传递模块标签键来检索模块的版本,例如:

>>  module_dict["seaborn"]
'0.9.0'