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

sudo apt-get install python-setuptools

sudo easy_install statlib
sudo easy_install construct

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


当前回答

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

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

其他回答

你可以试试

>>> import statlib
>>> print statlib.__version__

>>> import construct
>>> print contruct.__version__

这是PEP 396推荐的方法。但是PEP从未被接受,并且一直被推迟。事实上,Python核心开发人员似乎越来越支持不包含__version__属性,例如在Remove importlib_metadata.version..

Python >= 3.8:

如果您使用的是Python >= 3.8,则可以使用内置库中的模块。要检查包的版本(在这个例子中),运行:

>>> from importlib.metadata import version
>>> version('construct')
'4.3.1'

Python < 3.8:

使用随setuptools库分发的pkg_resources模块。注意,传递给get_distribution方法的字符串应该对应于PyPI条目。

>>> import pkg_resources
>>> pkg_resources.get_distribution('construct').version
'2.5.2'

边注:

请注意,传递给get_distribution方法的字符串应该是在PyPI中注册的包名,而不是您试图导入的模块名。不幸的是,它们并不总是相同的(例如,你安装了memcached,但导入了memcache)。 如果你想从命令行应用这个解决方案,你可以这样做:

python -c \
  "import pkg_resources; print(pkg_resources.get_distribution('construct').version)"

你可以试试这个:

pip list

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

输出

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

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

下面是一个小Bash程序,用于获取Python环境中任何包的版本。只需复制到你的/usr/bin,并为其提供可执行权限:

#!/bin/bash
packageName=$1

python -c "import ${packageName} as package; print(package.__version__)"

然后你可以在终端中运行它,假设你将脚本命名为py-check-version:

py-check-version whatever_package