How to check version of python modules?
我刚刚安装了python模块:
1 2 3 4 5 6 7 8 | # 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版本是
我建议用PIP代替易安装。使用pip,可以列出所有已安装的软件包及其版本
1 | pip freeze |
在大多数Linux系统中,您可以通过管道将其发送到
1 2 | $ pip freeze | grep lxml lxml==2.3 |
对于单个模块,可以尝试
1 2 3 4 5 6 | $ python -c"import requests; print(requests.__version__)" 2.14.2 $ 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__' |
最后,由于问题中的命令的前缀是
你可以试试
1 2 3 4 5 | >>> import statlib >>> print statlib.__version__ >>> import construct >>> print contruct.__version__ |
使用与
1 2 3 | >>> import pkg_resources >>> pkg_resources.get_distribution("construct").version '2.5.2' |
如果要从命令行运行它,可以执行以下操作:
1 | python -c"import pkg_resources; print(pkg_resources.get_distribution('construct').version)" |
注意,传递给
不幸的是,这些并不总是相同的(例如,你做的是
我认为这有帮助,但首先安装
1 2 3 | sudo pip install show # in order to get package version execute the below command sudo pip show YOUR_PACKAGE_NAME | grep Version |
更好的方法是:
有关特定包的详细信息
It details out the Package_name, Version, Author, Location etc.
1 2 3 4 5 6 7 8 9 10 | $ 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: |
更多详情:
为此,应更新
1 | pip install --upgrade pip |
在Windows上,建议的命令是:
1 | python -m pip install --upgrade pip |
在python3中,在打印周围加括号
1 2 3 | >>> import celery >>> print(celery.__version__) 3.1.14 |
如果您不想解壳,并且您使用的是PIP8或9,那么仍然可以使用
更新:这里的解决方案在PIP 8和9中有效,但是在PIP 10中,功能已经从
1 2 3 4 5 6 7 8 9 | 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', ...] |
以前的答案没有解决我的问题,但此代码解决了:
1 2 3 4 | import sys for name, module in sorted(sys.modules.items()): if hasattr(module, '__version__'): print name, module.__version__ |
如果上述方法不起作用,那么在python中尝试以下方法是值得的:
1 2 3 4 | import modulename modulename.version modulename.version_info |
看到Python龙卷风版本了吗?
注意,除龙卷风外,
首先将python、pip添加到环境变量中。以便可以从命令提示符执行命令。然后简单地给出python命令。然后导入包
-->
然后打印版本名
-->
这肯定管用
有些模块没有
安装python时,还将获得python包管理器pip。您可以使用pip获取Python模块的版本。如果要列出所有已安装的python模块及其版本号,请使用以下命令:
1 | $ pip freeze |
您将得到输出:
1 2 3 4 5 6 7 | asn1crypto==0.22.0 astroid==1.5.2 attrs==16.3.0 Automat==0.5.0 backports.functools-lru-cache==1.3 cffi==1.10.0 ... |
要单独找到版本号,您可以在*nix机器上对输出进行grep。例如:
1 | $ pip freeze | grep PyMySQL |
pYyySQL=0.7.11在Windows上,可以使用findstr而不是grep。例如:
1 | PS C:\> pip freeze | findstr PyMySql |
pYyySQL=0.7.11
如果您想知道Python脚本中模块的版本,可以使用模块的
1 2 3 | >>> import pylint >>> pylint.__version__ '1.7.1' |
假设我们使用的是Jupyter笔记本(如果使用终端,请去掉感叹号):
1)如果包装(如xgboost)安装了PIP:
1 2 3 | !pip show xgboost !pip freeze | grep xgboost !pip list | grep xgboost |
2)如果包装(如CAffe)与Conda一起安装:
1 | !conda list caffe |
使用
1 2 3 4 5 6 7 8 | >>> import selenium >>> dir(selenium) ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__'] >>> selenium.__version__ '3.141.0' >>> selenium.__path__ ['/venv/local/lib/python2.7/site-packages/selenium'] |
这也适用于Windows上的Jupyter笔记本!只要jupyter是从bash兼容的命令行(如git bash(mingw64))启动的,许多答案中给出的解决方案就可以在Windows系统上的jupyter笔记本中使用,只需稍作调整。
我运行的是windows 10-pro,通过anaconda安装了python,当我通过git bash启动jupyter时(但在anaconda提示符下启动时不会这样做)。
调整:在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | >>>!pip show lxml | grep Version Version: 4.1.0 >>>!pip freeze | grep lxml lxml==4.1.0 >>>!pip list | grep lxml lxml 4.1.0 >>>!pip show lxml Name: lxml Version: 4.1.0 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. Home-page: http://lxml.de/ Author: lxml dev team Author-email: lxml-dev@lxml.de License: BSD Location: c:\users\karls\anaconda2\lib\site-packages Requires: Required-by: jupyter-contrib-nbextensions |
您可以为此使用
如果您使用的是python
1 | pip install importlib_metadata |
由于python
然后,要检查包的版本(在本例中为
1 2 3 | >>> from importlib_metadata import version >>> version('lxml') '4.3.1' |
请记住,这只适用于从Pypi安装的包。此外,必须将包名作为参数传递给
要获取在当前模块中导入的非标准(PIP)模块的列表,请执行以下操作:
1 2 | [{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() if pkg.key in set(sys.modules) & set(globals())] |
结果:
1 2 3 | >>> 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'}] |
注:
这个代码是从这个页面上的解决方案以及从如何列出导入的模块中组合而成的?
我有同样的问题,我试图卸载两个模块: