如何检查python模块的版本?
我刚刚安装了python模块: construct
和setuptools
像这样的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__
使用与setuptools
库pkg_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和如何列出导入的模块放在一起的?