如何检查python模块的版本?

我刚刚安装了python模块: constructsetuptools像这样的setuptools

 # Install setuptools to be able to download the following sudo apt-get install python-setuptools # Install statlib for lightweight statistical tools sudo easy_install statlib # Install construct for packing/unpacking binary data sudo easy_install construct 

我希望能够(以编程方式)检查他们的版本。 有没有相当于python --version我可以从命令行运行?

我的Python版本是2.7.3

我build议使用pip来代替easy_install 。 使用pip,您可以列出所有已安装的软件包及其版本

 pip freeze 

对于单个模块,可以尝试__version__属性 ,但是有些模块没有它:

 $ pip freeze | grep lxml lxml==2.3 $ python -c "import lxml; print lxml.__version__" Traceback (most recent call last): File "<string>", line 1, in <module> AttributeError: 'module' object has no attribute '__version__' 

最后,当你用sudo前缀运行命令时,我猜你正在安装到全局python环境。 强烈build议查看Python 虚拟环境pipe理器,例如virtualenvwrapper

你可以试试

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

使用与setuptoolspkg_resources分发的pkg_resources模块。 请注意,您传递给get_distribution方法的string应与PyPI条目相对应。

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

如果你想从命令行运行它,你可以这样做:

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

(免责声明:这几乎是对这个答案的转发,但对我来说,这个问题比任何其他答案都要重要。

我觉得这个可以帮助首先安装show package以便运行pip show然后使用show来查找版本!

 sudo pip install show # in order to get package version execute the below command sudo pip show YOUR_PACKAGE_NAME | grep Version 

在python3与括号周围打印

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

以前的答案没有解决我的问题,但是这个代码做了:

 import sys for name, module in sorted(sys.modules.items()): if hasattr(module, '__version__'): print name, module.__version__ 

module.__version__是一个很好的尝试,但它并不总是工作。

如果你想从Python内部获取版本(没有脱壳),请尝试pip.get_installed_distributions()

 import pip pip.get_installed_distributions() # -> [distribute 0.6.16 (...), ...] [ pkg.key + ': ' + pkg.version for pkg in pip.get_installed_distributions() if pkg.key in ['setuptools', 'statlib', 'construct'] ] # -> nicely filtered list of ['setuptools: 3.3', ...] 

如果上述方法不起作用,值得在python中尝试以下内容:

 import modulename modulename.version modulename.version_info 

请参阅获取Python龙卷风版本?

请注意,除了龙卷风之外, .version还为我做了一些其他的工作。

有些模块没有__version__属性,所以最简单的方法是在terminal: pip list检查

要获取当前模块中导入的非标准(pip)模块列表,请执行以下操作:

 [{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() if pkg.key in set(sys.modules) & set(globals())] 

结果:

 >>> import sys, pip, nltk, bs4 >>> [{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() if pkg.key in set(sys.modules) & set(globals())] [{'pip': '9.0.1'}, {'nltk': '3.2.1'}, {'bs4': '0.0.1'}] 

注意:

这个代码是从这个页面上的解决scheme和如何列出导入的模块放在一起的?